Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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选择查询_Sql_Select_Join_Merge - Fatal编程技术网

合并/加入SQL选择查询

合并/加入SQL选择查询,sql,select,join,merge,Sql,Select,Join,Merge,我正在努力结合下面的Select语句,我知道我可以作弊,在中添加一些假的列,然后使用Union,但我想正确地做到这一点。 一旦我加入了它们,我将把Statment放入一个XML文件中,以便与Word和CRM4一起使用 SELECT BILLTO_NAME, BILLTO_LINE1, BILLTO_LINE2, BILLTO_LINE3, BILLTO_CITY, BILLTO_COUNTRY, BI

我正在努力结合下面的Select语句,我知道我可以作弊,在中添加一些假的列,然后使用Union,但我想正确地做到这一点。 一旦我加入了它们,我将把Statment放入一个XML文件中,以便与Word和CRM4一起使用

SELECT BILLTO_NAME, 
       BILLTO_LINE1, 
       BILLTO_LINE2, 
       BILLTO_LINE3, 
       BILLTO_CITY, 
       BILLTO_COUNTRY, 
       BILLTO_POSTALCODE, 
       ORDERNUMBER, 
       REQUESTDELIVERYBY, 
       MODIFIEDON, 
       SHIPTO_NAME, 
       SHIPTO_LINE1, 
       SHIPTO_LINE2, 
       SHIPTO_LINE3, 
       SHIPTO_CITY, 
       SHIPTO_STATEORPROVINCE, 
       SHIPTO_COUNTRY, 
       SHIPTO_POSTALCODE, 
       CREATEDBY 
FROM   SALESORDERBASE 



SELECT QUANTITY, 
       DESCRIPTION 
FROM   SALESORDERDETAILBASE 

SELECT NEW_ORDERNOTES, 
       NEW_NOTES 
FROM   SALESORDEREXTENSIONBASE 

它们都有一个公共列SalesOrderID,我还需要将其添加到某个位置。

假设标识关系的列在所有三个表上都称为id,则可以执行以下操作:

 SELECT sob.BILLTO_NAME, 
   sob.BILLTO_LINE1, 
   sob.BILLTO_LINE2, 
   sob.BILLTO_LINE3, 
   sob.BILLTO_CITY, 
   sob.BILLTO_COUNTRY, 
   sob.BILLTO_POSTALCODE, 
   sob.ORDERNUMBER, 
   sob.REQUESTDELIVERYBY, 
   sob.MODIFIEDON, 
   sob.SHIPTO_NAME, 
   sob.SHIPTO_LINE1, 
   sob.SHIPTO_LINE2, 
   sob.SHIPTO_LINE3, 
   sob.SHIPTO_CITY, 
   sob.SHIPTO_STATEORPROVINCE, 
   sob.SHIPTO_COUNTRY, 
   sob.SHIPTO_POSTALCODE, 
   sob.CREATEDBY, 
   sodb.QUANTITY, 
   sodb.DESCRIPTION,
   soeb.NEW_ORDERNOTES, 
   soeb.NEW_NOTES 
 From SalesOrderBase sob
 JOIN SalesOrderDetailBase sodb
   ON sob.id = sodb.SalesOrderID
 JOIN SalesOrderExtensionBase soeb
   ON sob.id = soeb.SalesOrderID
您可以将连接视为将行并排地猛击在一起,而联合则是将行一个接一个地猛击在一起。联合要求列相同,联合要求每行之间存在某种关系


编辑-OP提供了更多详细信息

假设标识关系的列在所有三个表上都称为id,则可以执行以下操作:

 SELECT sob.BILLTO_NAME, 
   sob.BILLTO_LINE1, 
   sob.BILLTO_LINE2, 
   sob.BILLTO_LINE3, 
   sob.BILLTO_CITY, 
   sob.BILLTO_COUNTRY, 
   sob.BILLTO_POSTALCODE, 
   sob.ORDERNUMBER, 
   sob.REQUESTDELIVERYBY, 
   sob.MODIFIEDON, 
   sob.SHIPTO_NAME, 
   sob.SHIPTO_LINE1, 
   sob.SHIPTO_LINE2, 
   sob.SHIPTO_LINE3, 
   sob.SHIPTO_CITY, 
   sob.SHIPTO_STATEORPROVINCE, 
   sob.SHIPTO_COUNTRY, 
   sob.SHIPTO_POSTALCODE, 
   sob.CREATEDBY, 
   sodb.QUANTITY, 
   sodb.DESCRIPTION,
   soeb.NEW_ORDERNOTES, 
   soeb.NEW_NOTES 
 From SalesOrderBase sob
 JOIN SalesOrderDetailBase sodb
   ON sob.id = sodb.SalesOrderID
 JOIN SalesOrderExtensionBase soeb
   ON sob.id = soeb.SalesOrderID
您可以将连接视为将行并排地猛击在一起,而联合则是将行一个接一个地猛击在一起。联合要求列相同,联合要求每行之间存在某种关系

编辑-OP提供了更多详细信息

您可以在表格上使用:

SELECT ob.SalesOrderID 
       ob.BILLTO_NAME, 
       ob.BILLTO_LINE1, 
       ob.BILLTO_LINE2, 
       ob.BILLTO_LINE3, 
       ob.BILLTO_CITY, 
       ob.BILLTO_COUNTRY, 
       ob.BILLTO_POSTALCODE, 
       ob.ORDERNUMBER, 
       ob.REQUESTDELIVERYBY, 
       ob.MODIFIEDON, 
       ob.SHIPTO_NAME, 
       ob.SHIPTO_LINE1, 
       ob.SHIPTO_LINE2, 
       ob.SHIPTO_LINE3, 
       ob.SHIPTO_CITY, 
       ob.SHIPTO_STATEORPROVINCE, 
       ob.SHIPTO_COUNTRY, 
       ob.SHIPTO_POSTALCODE, 
       ob.CREATEDBY,
       od.QUANTITY,
       od.DESCRIPTION,
       oe.NEW_ORDERNOTES,
       oe.NEW_NOTES
FROM   SALESORDERBASE ob
LEFT JOIN SALESORDERDETAILBASE od
    on ob.SalesOrderID = od.SalesOrderID
LEFT JOIN SALESORDEREXTENSIONBASE oe
    on ob.SalesOrderID = oe.SalesOrderID
您可以在表上使用:

SELECT ob.SalesOrderID 
       ob.BILLTO_NAME, 
       ob.BILLTO_LINE1, 
       ob.BILLTO_LINE2, 
       ob.BILLTO_LINE3, 
       ob.BILLTO_CITY, 
       ob.BILLTO_COUNTRY, 
       ob.BILLTO_POSTALCODE, 
       ob.ORDERNUMBER, 
       ob.REQUESTDELIVERYBY, 
       ob.MODIFIEDON, 
       ob.SHIPTO_NAME, 
       ob.SHIPTO_LINE1, 
       ob.SHIPTO_LINE2, 
       ob.SHIPTO_LINE3, 
       ob.SHIPTO_CITY, 
       ob.SHIPTO_STATEORPROVINCE, 
       ob.SHIPTO_COUNTRY, 
       ob.SHIPTO_POSTALCODE, 
       ob.CREATEDBY,
       od.QUANTITY,
       od.DESCRIPTION,
       oe.NEW_ORDERNOTES,
       oe.NEW_NOTES
FROM   SALESORDERBASE ob
LEFT JOIN SALESORDERDETAILBASE od
    on ob.SalesOrderID = od.SalesOrderID
LEFT JOIN SALESORDEREXTENSIONBASE oe
    on ob.SalesOrderID = oe.SalesOrderID

谢谢,伙计们,我以为这是我需要的一个加入,但不确定,我有一个小小的问题,事实上SalesOrderBase和SalesOrderDetailBase中都有一个描述列,我想我可以去掉一个。有人对我可以阅读的SQL书籍有什么建议吗?Ry@RyanKeen您只需为这些字段提供一个具有不同名称的别名。那么从这两列返回数据应该没有问题。:)非常感谢你们的帮助。谢谢你们,我想这是我需要的一个加入,但不确定,我对SalesOrderBase和SalesOrderDetailBase中都有一个描述栏这一事实有点小问题,我想我可以去掉一个。有人对我可以阅读的SQL书籍有什么建议吗?Ry@RyanKeen您只需为这些字段提供一个具有不同名称的别名。那么从这两列返回数据应该没有问题。:)非常感谢你的帮助。