1

以下の Select ステートメントを組み合わせるのに苦労しています。チートしていくつかの偽の列を追加してから Union を使用できることはわかっていますが、これを正しく行いたいです。それらを結合したら、ステートメントを 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 の共通の列を持っているので、これもどこかに追加する必要があります。

4

2 に答える 2

1

LEFT JOINテーブルでa を使用できます。

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
于 2012-10-15T18:47:51.153 に答える
0

リレーションシップを識別する列が 3 つのすべてのテーブルで 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

JOIN は行を横に並べてバタンと締めることと考えることができますが、UNION は行を上下にバタンと締めることです。UNION では列が同じである必要があり、JOIN では各行間に何らかの関係があることが必要です。

編集 - OPは詳細を提供しました

于 2012-10-15T18:44:52.923 に答える