車
| 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 | 空值 |
| 4 | 特斯拉 | 是的 | 2020-01 | 空值 |
| 4 | 特斯拉 | 是的 | 2020-02 | 空值 |
我的查詢搜索必須使用可用性和日期(陣列)
select .....
join ....
where
car.available = 'yes'
and purchase.date in ('2020-01', '2020-02')
uj5u.com熱心網友回復:
我們可以在這里使用日歷表交叉連接方法:
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表中以獲得您想要的輸出。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/442198.html
