如何在SQL服务器中交叉连接两个表
问题描述:
HI 我有一个表EMP_SCHED,其中包含EMP_ID的COMMENTS列和另一个表SHIFT,它还包含EMP_ID.Now的COMMENTS列,对于给定的日期范围,我需要从两个表中选择COMMNETS桌子。如何在SQL服务器中交叉连接两个表
例如,在我有EMP_SCHED表7个EMP_IDs和2个EMPIDs移位。我需要的所有EMPIDS和COMMNETNS和地方共同EMPID意见从两个表中单列
我想到的地方加入第一在EMP_SCHED然后SHIFT但他们返回了多行
SELECT distinct E.[EMP_ID]as SCHED_EMP,S.EMP_ID as SHIFT_EMP,
E.[SCHED_COMMENT],S.COMMENTS
FROM [EMP_SCHED_COMMENT] E, SHIFT S
where e.emp_id =*s.emp_id
输出看上去
NULL 33018 NULL Truck Delivery
NULL 33029 NULL Order Beer/Wine
NULL 33067 NULL Deli Shift Available
NULL 33115 NULL Clean backroom
NULL 34232 NULL ccccc
34020 34020 kkkkkk
34020 34020 looo
我在这里干什么是否正确? 用于当另外MY SQL SERVER是不允许的关键字LFET RIGHT加入
(其中一个条件预计在上下文指定的非布尔类型的表达式,邻近“左”)
答
第一得到鲜明ID列表
SELECT DISTINCT EMP_ID
FROM EMP_SCHED
UNION
SELECT DISTINCT EMP_ID
FROM SHIFT
然后链接原始表。
如何不使用左连接?
此作品在SQL Server 2005
DECLARE @Employee TABLE(
EmpID INT,
Comment VARCHAR(MAX)
)
DECLARE @Shift TABLE(
Emp_ID INT,
Comment VARCHAR(MAX)
)
INSERT INTO @Employee (EmpID,Comment) SELECT 1, 'Emp1'
INSERT INTO @Employee (EmpID,Comment) SELECT 2, 'Emp2'
INSERT INTO @Employee (EmpID,Comment) SELECT 3, 'Emp3'
INSERT INTO @Shift (Emp_ID,Comment) SELECT 2, 'Shift2'
INSERT INTO @Shift (Emp_ID,Comment) SELECT 3, 'Shift3'
INSERT INTO @Shift (Emp_ID,Comment) SELECT 4, 'Shift4'
SELECT *
FROM (
SELECT DISTINCT
EmpID
FROM @Employee
UNION
SELECT DISTINCT
Emp_ID
FROM @Shift
) EmpIDs LEFT JOIN
@Employee e ON EmpIDs.EmpID = e.EmpID LEFT JOIN
@Shift s ON EmpIDs.EmpID = s.Emp_ID
答
SELECT EMP_SCHED.COMMENTS, SHIFT.COMMENTS
FROM EMP_SCHED LEFT OUTER JOIN SHIFT ON
EMP_SCHED.EMP_ID = SHIFT.EMP_ID
WHERE
[(YOUR DATE RANGE FILTER)]
在跨SQL Server的语法连接是TABLE1 CROSS JOIN TABLE2 ..
和左连接是INFACT LEFT OUTER JOIN和RIGHT OUTER JOIN是正确的外部加入。我不确定LEFT和/或RIGHT是否是正确的语法。
+0
从您的问题我看不到您需要交叉连接。 – 2009-07-23 11:17:21
我已经使用过,但如果列名是difernet两种情况会怎么样。我的casse中发生了什么是它从我的第一张表中挑选值 – GustyWind 2009-07-23 11:12:55