--客户表
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 张三 深圳有限公司小弟是新手 分数不够 请大侠们谅解!!谢谢!!
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 张三 深圳有限公司小弟是新手 分数不够 请大侠们谅解!!谢谢!!
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
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 张三 深圳有限公司
*/
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的一模一样