我对这个MySQL select查询感到困惑,除了COUNT(messages)
和COUNT(project_ideas)
回来两次之外,我收到了正确的信息。MySQL中的联接和计数问题
SELECT
create_project.title,
image1,
create_project.description,
create_project.date,
create_project.active,
create_project.completed,
create_project.project_id,
categories.name,
messages.receiver_read,
project_ideas.project_id,
COUNT(messages.ideas_id) AS num_of_messages,
COUNT(project_ideas.ideas_id) AS num_of_ideas
FROM
create_project
LEFT JOIN project_ideas ON create_project.project_id = project_ideas.project_id
LEFT JOIN messages ON messages.project_id = create_project.project_id
JOIN categories ON create_project.category = categories.category_id
WHERE
create_project.user_id = {$_SESSION['user']['user_id']}
AND create_project.active = 1
AND create_project.completed = 1
GROUP BY project_ideas.project_id
ORDER BY create_project.date ASC
任何帮助,将不胜感激谢谢。
如果您忽略了GROUP BY,您可以看到原因。你最好的选择是'COUNT(DISTINCT messaged.some_uniqe_column_of_messages)',可能是主键... – Wrikken
我还看到一个SQL注入漏洞。将准备好的语句与PDO一起使用,而不是将变量的值直接放入SQL中。即使你认为会话变量很干净,你仍然在掷骰子。 – siride