我有四张table:
- 药物
- 制造商
- 药品生产商
- 药物报告
药品表
| 身份证|姓名|
| --------------|--------------|
| 1|第1行|
| 2|第二排|
制造商表:
| 身份证|姓名|
| --------------|--------------|
| 1| ДИГОКСИН ТАБЛ。0,25 МГ №40|
| 2|药物名称54|
药品生产商表
| 药品ID|制造商ID|计数器|
| --------------|--------------|--------------|
| 1| 3| 1|
| 1|四十五|2|
和drug_reports表
| 身份证|周期码|药品ID|制造商ID|日期|
| --------------|--------------|--------------|--------------|--------------|
| 1|公司简介|1| 3| 2023年1月1日|
| 2| A101| 1|四十五|2023年1月1日|
| 3| A102系列|2| 3| 2023年1月1日|
所以我创建了如下查询:
SELECT dr.id, dm.counter, dr.period_code, dr.drug_id, d.name, m.name FROM drug_reports dr
LEFT JOIN drugs d ON dr.drug_id = d.id
LEFT JOIN drug_manufacturers dm ON d.id = dm.drug_id
LEFT JOIN manufacturers m ON dm.manufacturer_id = m.id
WHERE dr.period_code LIKE '%72411 IM%'
它返回:
有趣的是,ID:412790和period_code:72411 IM 信息是表中的一条记录。因此,它被多次退回。多次返回的数据太多。我也尝试了以下查询,但它也返回了错误的数据:
SELECT dr.id, dm.counter, dr.period_code, dr.drug_id, d.name, m.name FROM drug_reports dr
LEFT JOIN drugs d ON dr.drug_id = d.id
LEFT JOIN drug_manufacturers dm ON d.id = dm.drug_id
LEFT JOIN manufacturers m ON dm.manufacturer_id = m.id AND dr.mf_id = dm.manufacturer_id
WHERE dr.period_code LIKE '%72411 IM%'
我需要以下结果:
| dr.id | 周期码|姓名|计数器|制造商|
| --------------|--------------|--------------|--------------|--------------|
| 412790|小行星72411| ДИГОКСИН ТАБЛ。0,25 МГ №40| 5| ARPIMED|
如何写一个正确的查询?有人能有主意吗?
1条答案
按热度按时间ymdaylpp1#
下面的查询显示了多对多连接过程中中间链接表中的所有数据。那是
所以,我写了以下查询:
返回我想要的结果。结果没有任何重复记录。谢谢大家!