gpt4 book ai didi

Mysql深层连接

转载 作者:行者123 更新时间:2023-11-29 21:31:37 25 4
gpt4 key购买 nike

enter image description here

结果显示:
我想选择 tbl_appointment 中的所有数据,其中 user_id=100
tbl_doctor 加入 doctor_name
加上
我想加入第三个表tbl_document
哪里
total_type1count(document_type),其中 document_type=1 对于每个 user_id 和 doctor_id 对
total_type2count(document_type),其中每个 user_id 和 doctor_id 对的 document_type=2
total_type3count(document_type),其中每个 user_id 和 doctor_id 对的 document_type=3

我尝试过:

SELECT * FROM tbl_appointment AS main
JOIN(
SELECT doctor_id AS d_id,doctor_name FROM tbl_doctor
)doctor
ON man.doctor_id=doctor.d_id
where user_id=100

我对加入第三张 table 感到困惑,请帮助我

最佳答案

我不知道为什么新的 SQL 用户总是尝试连接子查询而不是直接连接表。有没有一些教程告诉他们这样做?

无论如何,您都可以像加入第二个表一样加入第三个表。由于可能并非每个医生都存在文档(我不了解您的系统),因此我对该表使用了LEFT OUTER JOIN

SELECT
APPT.user_id,
DR.doctor_id,
APPT.appointment,
DR.doctor_name,
SUM(CASE WHEN DOC.document_type = 1 THEN 1 ELSE 0 END) AS total_type1,
SUM(CASE WHEN DOC.document_type = 2 THEN 1 ELSE 0 END) AS total_type2,
SUM(CASE WHEN DOC.document_type = 3 THEN 1 ELSE 0 END) AS total_type3
FROM tbl_appointment AS APPT
INNER JOIN tbl_doctor DR ON DR.doctor_id = APPT.doctor_id
LEFT OUTER JOIN tbl_document DOC ON DOC.doctor_id = DR.doctor_id
WHERE
APPT.user_id = 100
GROUP BY
APPT.user_id,
DR.doctor_id,
APPT.appointment,
DR.doctor_name

回顾您的结果,我意识到您正在尝试计算每种文档类型的数量。您可以使用上面的 SUM(CASE...) 语句来执行此操作,尽管如果添加文档类型 4,这将无济于事。您最好将 document_type 包含在结果集中,将其添加到 GROUP BY 列表中,然后只计算 COUNT(*).您将为每种文档类型获得单独的行,但只要您的前端处理这种形式的结果,它就更容易扩展。

关于Mysql深层连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35206839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com