我在MySQL数据库中有这样的表结构:
#data_table
(id) | user_id | (more fields...)
#relations_table
(id) | user_id | user_coach_id | (...)
我想选择relation_table
中具有给定user_coach_id
的所有行,以及data_table
中与user_id
匹配的所有行中的每一行。理想情况下,在一个查询中,更理想的方式是使数据处理不太复杂。
我的SQL技能有点生疏,所以我希望有人可以帮助我,或者至少指出正确的方向。
(注意:我将在这种情况下使用的框架是wordpress wpdb类。但我认为它并不真正相关。)
编辑:谢谢,我得到了我所要求的工作,但现在我遇到了一个更复杂的情况,所以我为此做了more specific question。
答案 0 :(得分:2)
只需简单地加入一个(例如“左连接”)
SELECT data_table.id ,data_table.user_id ,data_table.(more_fields...), relations_table.user_id
FROM data_table
LEFT JOIN relations_table
ON data_table.id =relations_table.user_id
ORDER BY data_table.id ;
答案 1 :(得分:1)
"对于给定的user_coach_id"成功:
DECLARE @User_Coach_Id = 100
SELECT rt.user_id, ...
FROM #data_table dt
INNER JOIN #relations_table rt
ON dt.user_id = rt.user_id
WHERE rt.User_Coach_Id = @User_Coach_Id
答案 2 :(得分:1)
Relations_table是一个很多:很多表?遗漏了身份;这是浪费,减慢了速度。见http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table
如果框架不能让你做到最佳,那么框架是相关的。