【发布时间】:2016-02-01 12:00:21
【问题描述】:
需要一些关于 mysql select with left join 的帮助,我尝试了很多选项,在堆栈上查找答案,但无法解决这个问题。我将不胜感激任何帮助。谢谢。
SELECT profile_main.id,
profile_main.add_date,
profile_main.expire_date,
profile_main.status_begin,
profile_main.status_expire,
profile_main.views,
profile_main.last,
profile_main.confirm,
profile_info.name,
profile_contacts.remains,
profile_rating.rating
FROM profile_main
LEFT JOIN profile_info
ON profile_main.id=profile_info.profile_id
LEFT JOIN profile_contacts
ON profile_main.id=profile_contacts.profile_id
LEFT JOIN (
SELECT profile_rating.profile_id, SUM(profile_rating.rating)
FROM profile_rating
GROUP BY profile_rating.profile_id
) profile_rating
ON profile_main.id=profile_rating.profile_id
WHERE profile_main.user_id=$user_id
AND profile_main.deleted=0
问题是LEFT JOIN 和profile_rating。我需要SUM(profile_rating.rating)
这是 profile_main 表。表什么保存所有配置文件 enter image description here
这是 profile_rating 表。 [编辑] 此表可能不包含所有个人资料评级,仅包含评级较早的那些
id profile_id user_id rating ip_addr add_date deleted
--------------------------------------------------------------
1 16 5 15 111.111.111.111 123432433 0
2 16 5 17 111.111.111.111 123432433 0
3 16 5 25 111.111.111.111 123432433 0
4 16 5 34 111.111.111.111 123432433 0
5 16 5 12 111.111.111.111 123432433 0
如果还需要什么,我会补充的
【问题讨论】:
-
究竟是什么问题,您的联接是否按预期运行?
-
使用表别名使查询更具可读性。例如。
FROM profile_main AS pm...。然后SELECT pm.id, pm.add_date.... -
当我运行这个查询时,它返回给我“'字段列表'中的未知列'profile_rating.rating'”
-
感谢您的所有回答。非常棒! :) 现在这个话题结束了