[英]How to return rows from left table where condition on right table true on all row without sub query
[英]How to get all row from left table multiply for right table
我有以下两个表:
Table: ProductList
Product;
Product a
Procuct b
Product c
...
Product Z
Table: SalesTable
Agent, Product, Qty
ZXY, Product A, 200
ABC, Product A, 100
ABC, Product B, 200
我想要一个带有所有产品列表*代理商列表的表格。 因此,对于instnace:
Agent, Product, Qty
ZXY, Product A, 200
ZXY, Product B, -
ZXY, Product C, -
....
ABC, Product A, 100
ABC, Product B, 200
ABC, Product C, -
ABC, Product D, -
使用:
SELECT *
FROM ProductTable
LEFT JOIN AgentTable
ON ProductTable.Product = SalesTable.Product
显然不行。
你可以这样尝试
Select Distinct B.Agent,A.Product,C.Qty
from
Product A
Cross JOIN SalesTable B
Left join SalesTable C on C.Product=A.Product and C.Agent=B.AGENT
SELECT t1.Agent, t1.Product, COALESCE(s.Qty, '-') AS Qty
FROM (
SELECT a.Agent, p.Product
FROM (SELECT DISTINCT Agent FROM SalesTable) a
CROSS JOIN
(SELECT DISTINCT Product FROM ProductList) p
) t1 LEFT JOIN SalesTable s
ON (t1.Product = s.Product
AND t1.Agent = s.Agent)
试试这个查询
SELECT ST.*
FROM ProductList PL
JOIN SalesTable ST ON PL.Product = ST.Product
ORDER BY ST.Agent, ST.Product
根据需要删除了分组依据,但未分组
SQLFiddle- http: //www.sqlfiddle.com/#!2/30335/18
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.