我试图根据访问日期找出哪个市场没有哪个产品。
为了做到这一点,我想如果我将所有产品都提供给所有市场,那么将有null
个日期,因为市场上不会访问该产品。查看
我在市场上的所有产品都写了一个查询:
SELECT id, p.ProductName FROM atb_markets
CROSS JOIN
(SELECT StokAd FROM atb_products) p
我得到了这样的观点:
MarketId productName
1 a
1 b
1 c
1 d
1 e
1 f
2 a
2 b
2 c
2 d
2 e
. .
. .
顺便说一下,这些都是不同的表(atb_markets
,atb_products
),日期保存在outformmobiledata
表中。该表记录了市场的每个记录。 marketId
,productId
和date
持有此表(日期信息来自移动设备)。由于我需要productName
,我还需要atb_products
表。
最后,通过使用这三个表我需要这个视图。如果我得到null
值,我就可以知道市场上不存在哪些产品。
这就是我需要的观点:
date MarketId productName
01.12.2013 1 a
11.12.2013 1 b
NULL 1 c
04.12.2013 1 d
20.12.2013 1 e
05.12.2013 1 f
06.12.2013 2 a
NULL 2 b
NULL 2 c
12.12.2013 2 d
NULL 2 e
. . .
. . .
**正如您在第二个表market_number1
中所见,从未有过产品c
答案 0 :(得分:1)
只需将LEFT OUTER JOIN
用于outformmobiledata
表:
SELECT d.date, m.id, p.ProductName
FROM atb_markets m
CROSS JOIN atb_products p
LEFT OUTER JOIN outformmobiledata d
ON d.marketId = m.id
AND d.productId = p.id
ORDER BY m.id, p.ProductName