2014-10-16 53 views
0

我試圖根據訪問日期找到哪個市場沒有哪個產品。 爲了做到這一點,我想如果我將所有產品交付給所有市場,將會有null日期,因爲該產品將不會在市場上訪問。要查看 所有產品在市場上我寫了一個查詢:將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_marketsatb_products)和日期保存在outformmobiledata表中。這個表格包含了市場的每個記錄。 marketId,productIddate在此表上(日期信息來自移動設備)。因爲我需要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

回答

1

只需使用LEFT OUTER JOINoutformmobiledata表:

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 
+0

謝謝!!那正是我想要的。感謝您的幫助@Rimas – wtplayer11 2014-10-16 20:00:11