簡體   English   中英

查詢 sql 結果 null when not found where in (array)

[英]Query sql result null when not found where in (array)

ID 品牌 可用的
1個 豐田 是的
2個 日產 是的
3個 馬斯達
4個 特斯拉 是的

購買

id_car 日期 價格
1個 2020-01 50 美元
1個 2020-02 $52
2個 2020-01 $43
3個 2020-01 35美元
3個 2020-02 $32
3個 2020-03 15 美元
4個 2020-03 $43

我需要下表中的結果

ID 品牌 可用的 日期 價格
1個 豐田 是的 2020-01 50 美元
1個 豐田 是的 2020-02 $52
2個 日產 是的 2020-01 $43
2個 日產 是的 2020-02 null
4個 特斯拉 是的 2020-01 null
4個 特斯拉 是的 2020-02 null

我的查詢搜索必須使用可用性和日期(數組)

select .....
join ....
where
car.available = 'yes'
and purchase.date in ('2020-01', '2020-02')

我們可以在這里使用日歷表交叉連接方法:

SELECT c.id, c.brand, 'yes' AS available, d.date, p.price
FROM (SELECT id, brand FROM car WHERE available = 'yes') c
CROSS JOIN (SELECT DISTINCT date FROM purchase) d
LEFT JOIN purchase p
    ON p.id_car = c.id AND p.date = d.date
WHERE d.date IN ('2020-01', '2020-02')
ORDER BY c.id;

這個想法是生成兩組,一組用於所有可用的汽車品牌,另一組用於所有已知的可用日期。 然后我們將這個中間表加入到purchase表中,得到你想要的 output。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM