Mysql SQL的子查询
我需要帮助使用子查询将两个查询语句连接在一起。我对如何将两者结合起来感到困惑。我感谢你的帮助Mysql SQL的子查询,mysql,sql-server,join,Mysql,Sql Server,Join,我需要帮助使用子查询将两个查询语句连接在一起。我对如何将两者结合起来感到困惑。我感谢你的帮助 SELECT * FROM MEDICAL_PROCEDURE JOIN PROCEDURE_CATEGORY ON medical_procedure.procedure_category_id = PROCEDURE_CATEGORY.PROCEDURE_CATEGORY_ID; SELECT Medical_procedure.medical_procedure_id,
SELECT * FROM MEDICAL_PROCEDURE
JOIN PROCEDURE_CATEGORY ON medical_procedure.procedure_category_id = PROCEDURE_CATEGORY.PROCEDURE_CATEGORY_ID;
SELECT
Medical_procedure.medical_procedure_id,
COUNT(procedure_tool_supply.medical_procedure_id) AS Supply_Needed
FROM Procedure_tool_supply
JOIN Medical_Procedure on Procedure_tool_supply.medical_procedure_id = Medical_procedure.medical_procedure_id
GROUP BY Procedure_tool_supply.medical_procedure_id
HAVING COUNT(Procedure_tool_supply.medical_procedure_id) < 3;
在没有测试数据的情况下无法进行真正的测试,但这应该是可行的。希望我正确地理解了您的意图:
SELECT *
FROM
MEDICAL_PROCEDURE P
JOIN PROCEDURE_CATEGORY C ON
P.procedure_category_id = C.PROCEDURE_CATEGORY_ID
cross apply (
SELECT
COUNT(T.medical_procedure_id) AS Supply_Needed
FROM
Procedure_tool_supply T
where
T.medical_procedure_id = P.medical_procedure_id
GROUP BY
T.medical_procedure_id
HAVING
COUNT(T.medical_procedure_id) < 3
) T
现在还不清楚你想要实现什么。但是,如果您的目的是在第一个查询的每一行上包含第二个查询的派生Supply\u Required列,并将返回的行限制为第二个查询返回了medical\u procedure\u id值的行,那么 你可以这样做:
SELECT mp.*
, pc.*
, ct.Supply_Needed
FROM MEDICAL_PROCEDURE mp
JOIN PROCEDURE_CATEGORY pc
ON mp.procedure_category_id = pc.PROCEDURE_CATEGORY_ID
JOIN ( SELECT pr.medical_procedure_id
, COUNT(ts.medical_procedure_id) AS Supply_Needed
FROM Procedure_tool_supply ts
JOIN Medical_Procedure pr
ON ts.medical_procedure_id = pr.medical_procedure_id
GROUP BY ts.medical_procedure_id
HAVING COUNT(ts.medical_procedure_id) < 3
) ct
ON ct.medical_procedure_id = mp.medical_procedure_id
你能分享一下你的桌子结构吗?n详细说明您希望结果如何?这是针对mysql还是sql server的?这是两个完全不同的数据库引擎。