SQL连接查询;订单与发票
我在编写SQL连接查询方面有点生疏,我需要关于连接要求的帮助。这是桌子SQL连接查询;订单与发票,sql,join,derby,Sql,Join,Derby,我在编写SQL连接查询方面有点生疏,我需要关于连接要求的帮助。这是桌子 Table : Txn TXN_KEY TYPE DATE -------------------------- 111 OD 10/5 221 CS 11/5 112 OD 12/5 222 CS 12/5 Table: TxnAssociation TXN_KEY
Table : Txn
TXN_KEY TYPE DATE
--------------------------
111 OD 10/5
221 CS 11/5
112 OD 12/5
222 CS 12/5
Table: TxnAssociation
TXN_KEY REF_TXN_KEY TYPE
---------------------------------
221 111 OS
类型OD
为订单,CS
为客户销售。有一些未结订单,也有一些无订单销售
需要一个连接查询来获得像
ORD SAL
--------------
111 221
112 null
null 222
我在用德比。我尝试了一些东西,但不值得调试。有人能帮忙吗 试试这个
SELECT orders.TXN_KEY as ORD, sales.TXN_KEY as SAL
FROM TxnAssociation ta
FULL JOIN Txn orders ON orders.TXN_KEY = ta.REF_TXN_KEY
FULL JOIN Txn sales ON sales.TXN_KEY = ta.TXN_KEY
WHERE isnull(orders.Type,'OD') = 'OD'
AND isnull(sales.Type,'CS') = 'CS'
好的,这个没有完全连接
SELECT orders.TXN_KEY as ORD,ta.TXN_KEY as SAL
FROM Txn orders
LEFT JOIN TxnAssociation ta ON orders.TXN_KEY = ta.REF_TXN_KEY
WHERE isnull(orders.Type,'OD') = 'OD'
UNION ALL
SELECT NULL as ORD,sales.TXN_KEY as SAL
FROM Txn sales
WHERE sales.Type= 'CS'
AND NOT EXISTS (SELECT 1
FROM Txn s
JOIN TxnAssociation t ON s.TXN_KEY = t.TXN_KEY
AND s.Type= 'CS' AND sales.TXN_KEY = s.TXN_KEY)
这个更好:
SELECT orders.TXN_KEY as ORD,ta.TXN_KEY as SAL
FROM Txn orders
LEFT JOIN TxnAssociation ta ON orders.TXN_KEY = ta.REF_TXN_KEY
WHERE isnull(orders.Type,'OD') = 'OD'
UNION ALL
SELECT ta.REF_TXN_KEY as ORD,sales.TXN_KEY as SAL
FROM Txn sales
LEFT JOIN TxnAssociation ta ON sales.TXN_KEY = ta.TXN_KEY
WHERE sales.Type= 'CS'
AND ta.REF_TXN_KEY is null
请详细解释您是如何获得所需结果集的。111如何连接到221?为什么不是112对222?@fancyPants查看表格
txnasociation
有一个协会b/w 111和221,但112和222没有。哦,是的,不知怎么漏掉了:)亲爱的落选选民,请在评论中说明落选的原因。对不起,我无法尝试,因为完全联接类型在derby中不可用,但derby同时具有左外联接和右外联接,所以可以合并它们。