Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 如何在SQL server中交叉连接两个表_Sql Server 2005_Join - Fatal编程技术网

Sql server 2005 如何在SQL server中交叉连接两个表

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.

嗨 我有一个表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.[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需要其他连接。您可以为交叉连接建议像=*这样的东西吗交叉连接