繁体   English   中英

如何从左表获得所有行乘以右表

[英]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

SQL小提琴演示

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM