2012-11-04 29 views
1

回到我非常陳舊的mysql技巧我需要以下查詢。mysql查詢獲取表1中的所有字段和部分來自表2

我有兩個表

一個被稱爲產品的cols項目名稱的所有項目表,項目NUM

二是用COLS項目NUM購買的項目表,日期

什麼我需要的結果是這樣的

ITEM-----PURCHASED 
item1-------0 
item2-------0 
item3-------0 
item4-------1 This item purchased 
item5-------0 
item6-------1 This item purchased 
item7-------0 
item8-------0 
. 
. 
. 
itemX-------0 

輸出包含在購買的山坳所有項目和1,如果該項目中購買的物品表中存在 ,如果尚未購買,則爲0。

我很抱歉,如果這是很容易我的大腦處於危機模式目前,它已經很長一段時間我都需要這樣的

回答

4

使用LEFT JOINCASE在連接表來測試NULL,您可以相應地返回一個零或1(我使用CASE,但您也可以在MySQL中執行IFNULL()):

SELECT 
    products.name, 
    products.item_num 
    /* items that have no related rows in `purchased` will be NULL */ 
    CASE WHEN purchased.item_num IS NULL then 0 ELSE 1 END AS purchased 
    /* Could also just do: 
     (purchesd.item_num IS NULL) AS purchased 
    because MySQL will return a 0 or 1 from the boolean condition, 
    but the CASE is more portable */ 
FROM 
    products 
    LEFT JOIN purchased ON products.item_num = purchased.item_num 
相關問題