2017-08-25 57 views
0

我有一組帶有序列號的簡單產品。如果銷售產品,其序列號將被放置在sold_items中,而所有曾經存在的項目仍保留在all_items之內。根據另一個表中的索引存在創建is_sold MySQL字段

一些樣本數據:

all_items 
id | serial_number | product_name | product_price 
1 | XXXXXXXXXXX01 | Laptop  | 199 
2 | XXXXXXXXXXX02 | Tablet  | 99 

sold_items 
id | serial_number | sold_time 
1 | XXXXXXXXXXX02 | [TIMESTAMP] 

我試圖做這樣的事情與我的查詢:

SELECT 
    all_items.* , 
    (JOIN sold_items ON sold_items.serial_number = all_items.serial_number) AS is_sold 
FROM all_items 

在這種情況下,預期產量將

[ 
    0=>[ 
    'id'=>1, 
    'serial_number'=>XXXXXXXXXXX01, 
    'product_name'=>Laptop, 
    'product_price'=>199, 
    'is_sold'=>0 
    ], 
    1=>[ 
    'id'=>1, 
    'serial_number'=>XXXXXXXXXXX02, 
    'product_name'=>Tablet, 
    'product_price'=>99, 
    'is_sold'=>1 
    ] 
] 

使用單個查詢可以輕鬆實現嗎?

回答

2

使用LEFT JOIN並測試其他表中的ID是否爲空。

SELECT a.*, s.id IS NOT NULL AS is_sold 
FROM all_items AS a 
LEFT JOIN sold_items AS s ON a.serial_number = s.serial_number 
相關問題