mysql - 如何制作一个 SQL 来创建一个报告,该报告选择具有特定行项目的所有报价,并在该报价上包含另一个项目?
问题描述
我有两个表:报价和项目。
报价表
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;
推荐阅读
- javascript - Tree Vuedraggable,无法将节点拖动到没有子节点的节点
- c# - ListBox 的 Scrollviewer 根据项目数可见
- excel - 如何格式化/填充一个数字以至少有 5 位数字?
- mysql - Excel 和工作台链接。MySql如何自动更新值
- php - 有没有办法在不使用 foreach 或其他函数的情况下在 PHP 中内爆关联数组的键和值?
- php - 保存在翻译模型中而不是保存在原始模型中 PHP Laravel Dimsav 翻译包
- git - 在另一个目录中获取 git 子模块的分支名称
- c++ - 关于检查数据是否存在的 C++ 程序崩溃
- c# - C# 中的舍入集成
- wikidata - 为什么我只能通过 wikidata python 包获得一个关键字结果?