Sql server 2005 如何在SQL server中交叉连接两个表
嗨 我有一个表EMP_SCHED,其中包含EMP_ID的COMMENTS列,另一个表SHIFT也包含EMP_ID的COMMENTS列。现在,对于给定的日期范围,我需要从两个表中选择commnet 例如,在中,EMP_SCHED表中有7个EMP_ID,SHIFT表中有2个EMPID。我需要所有EMPID和COMMNETN,并将两个表中公共EMPID的注释放在一行中 我想先在EMP_SCHED上放置join,然后在SHIFT上放置join,但它们返回了多行Sql server 2005 如何在SQL server中交叉连接两个表,sql-server-2005,join,Sql Server 2005,Join,嗨 我有一个表EMP_SCHED,其中包含EMP_ID的COMMENTS列,另一个表SHIFT也包含EMP_ID的COMMENTS列。现在,对于给定的日期范围,我需要从两个表中选择commnet 例如,在中,EMP_SCHED表中有7个EMP_ID,SHIFT表中有2个EMPID。我需要所有EMPID和COMMNETN,并将两个表中公共EMPID的注释放在一行中 我想先在EMP_SCHED上放置join,然后在SHIFT上放置join,但它们返回了多行 SELECT distinct E.
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
我在这里做得对吗?
此外,我的SQL SERVER在用于联接时不允许关键字LFET RIGHT
(在预期条件的上下文中指定的非布尔类型的表达式,靠近“左”)首先获取ID的不同列表
SELECT DISTINCT EMP_ID
FROM EMP_SCHED
UNION
SELECT DISTINCT EMP_ID
FROM SHIFT
然后链接原始表
如何不使用左连接
这在SQLServer2005中起作用
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
首先得到一个不同的ID列表
SELECT DISTINCT EMP_ID
FROM EMP_SCHED
UNION
SELECT DISTINCT EMP_ID
FROM SHIFT
然后链接原始表
如何不使用左连接
这在SQLServer2005中起作用
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
在SQL Server中,交叉联接的语法为TABLE1交叉联接TABLE2
左连接实际上是左外连接,右外连接实际上是右外连接。我不确定LEFT和/或RIGHT是正确的语法
在SQL Server中,交叉联接的语法为TABLE1交叉联接TABLE2
左连接实际上是左外连接,右外连接实际上是右外连接。我不确定LEFT和/或RIGHT是否是正确的语法。我使用过,但如果两个表的列名都是difernet该怎么办。在我的casse中发生的是它仅从我的第一个表中选取值我使用过,但如果两个表的列名都是difernet该怎么办。在我的casse中发生的是它仅从我的第一个表中选取值从你的问题中我不知道请看,您需要交叉连接。我尝试过使用交叉连接,但没有使用交叉连接,因为SQLSERVR2005需要其他连接。您可以为交叉连接建议像=*这样的东西吗?从您的问题中,我看不到您需要交叉连接。我尝试过使用交叉连接,但没有使用交叉连接,因为SQLSERVR2005需要其他连接。您可以为交叉连接建议像=*这样的东西吗交叉连接