--客户表
CREATE TABLE CUSTOMER
(
C_ID INT,
C_TYPE NVARCHAR(10),---I:个人 C:公司
C_NAME NVARCHAR(100)
)--客户车辆表
CREATE TABLE CUST_VEHICLE
(
C_ID INT,
VEH_ID INT
)--车辆表
CREATE TABLE VEHICLE

VEH_ID INT,
VEH_NAME NVARCHAR(100)
)INSERT INTO CUSTOMER VALUES (1,'I','张三')
INSERT INTO CUSTOMER VALUES (2,'C','深圳有限公司')INSERT INTO CUST_VEHICLE VALUES (1,4)
INSERT INTO CUST_VEHICLE VALUES (2,4)INSERT INTO CUST_VEHICLE VALUES (4,'奔驰SL') --现根据公司ID(表CUSTOMER中C_ID字段)查找属于该公司旗下的车辆(解释一下 VEH_ID=4的车辆属于个人--张三 同时属于公司--深圳有限公司)
--查询效果 (看清楚条件 根据公司ID查询 WHERE C_ID=2)
--VEH_ID  VEH_NAME  C_NAME     C_NAME
--  4       奔驰SL    张三     深圳有限公司小弟是新手 分数不够 请大侠们谅解!!谢谢!!

解决方案 »

  1.   

    Select VEH_ID, VEH_NAME, C_NAME, C_NAME
    From CUSTOMER T1 Left Join CUST_VEHICLE T2 On (T1.C_ID = T2.C_ID)
         Left Join CUST_VEHICLE T3 On (T2.VEH_ID =T3.VEH_ID )
    Where T1.C_ID  = 2
      

  2.   

    大侠 SQL不行啊 要不你在数据库试试
      

  3.   

    --客户表
    CREATE TABLE CUSTOMER
    (
    C_ID INT,
    C_TYPE NVARCHAR(10),---I:个人 C:公司
    C_NAME NVARCHAR(100)
    )--客户车辆表
    CREATE TABLE CUST_VEHICLE
    (
    C_ID INT,
    VEH_ID INT
    )--车辆表
    CREATE TABLE VEHICLE

    VEH_ID INT,
    VEH_NAME NVARCHAR(100)
    )INSERT INTO CUSTOMER VALUES (1,'I',N'张三')
    INSERT INTO CUSTOMER VALUES (2,'C',N'深圳有限公司')INSERT INTO CUST_VEHICLE VALUES (1,4)
    INSERT INTO CUST_VEHICLE VALUES (2,4)INSERT INTO VEHICLE VALUES (4,N'奔驰SL') SELECT 
    c.VEH_ID,c.VEH_NAME,MAX(CASE WHEN a.C_TYPE='I' THEN C_NAME END) AS 个人,MAX(CASE WHEN a.C_TYPE='C' THEN C_NAME END) AS 公司
    FROM CUSTOMER AS a
    INNER JOIN CUST_VEHICLE AS b ON a.C_ID=b.C_ID
    INNER JOIN VEHICLE AS c ON c.VEH_ID=b.VEH_ID
    WHERE EXISTS(SELECT 1 FROM CUST_VEHICLE AS x INNER JOIN  CUST_VEHICLE AS y ON  x.VEH_ID=y.VEH_ID AND x.C_ID=2) 
    GROUP BY c.VEH_ID,c.VEH_NAME/*
    VEH_ID VEH_NAME 个人 公司
    4 奔驰SL 张三 深圳有限公司
    */
      

  4.   

    SELECT 
        c.VEH_ID,c.VEH_NAME,MAX(CASE WHEN a.C_TYPE='I' THEN C_NAME END) AS 个人,MAX(CASE WHEN a.C_TYPE='C' THEN C_NAME END) AS 公司
    FROM CUSTOMER AS a
        INNER JOIN CUST_VEHICLE AS b ON a.C_ID=b.C_ID
        INNER JOIN VEHICLE AS c ON c.VEH_ID=b.VEH_ID
    WHERE EXISTS(SELECT 1 FROM CUST_VEHICLE AS x INNER JOIN  CUST_VEHICLE AS y ON  x.VEH_ID=y.VEH_ID AND x.C_ID=2) 
    GROUP BY c.VEH_ID,c.VEH_NAME这个是错误的 如果x.C_ID=1的话 效果和2的一模一样