我有两个表:quote 和 item。
报价表
id | quote_number
---+-------
1 | 100
2 | 200
项目表
id | model | quote_id | other_data
---+-------+----------+-----------
1 | ABC | 1 | xxx
2 | DISC | 1 | xxx
3 | ABC | 2 | xxx
4 | DISC | 2 | xxx
3 | XXX | 3 | xxx
4 | DISC | 3 | xxx
3 | ABC | 4 | xxx
我需要创建一个报告,在其中选择所有必须包含模型 ABC
的引号,如果它们包含,我还希望列出属于该模型的模型 DISC
引用。我想列出所有此类项目行。怎么办?
用简单的英语来说就是“给我所有带有模型 ABC 的报价,可能也有与之相关的折扣 (DISC)”。
示例报告
quote_id | model | other_data
---------+-------+---------+-
1 | ABC | xxx
1 | DISC | xxx
2 | ABC | xxx
2 | DISC | xxx
到目前为止,我只能弄清楚如何拉入带有ABC
的线,但我不知道如何拉入带有DISC
的线,其中有“必须将 ABC 连接到同一报价”的条件。
最佳答案
您可以使用子查询,如果您使用的是 MySQL 8.0,也可以使用 CTE
SELECT it.quote_id, it.model, it.other_data
FROM item it INNER JOIN (
SELECT quote_id
FROM item i WHERE model = 'ABC') as sub_it
ON it.quote_id=sub_it.quote_id
WHERE it.model='ABC' OR it.model='DISC'
ORDER BY it.quote_id DESC;
关于mysql - 如何制作一个 SQL 来创建一个报告,该报告选择所有带有 certian 行项目的报价,并包括另一个项目(如果它在该报价上)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50768378/