0
因此,我正在尝试编写一个MySQL查询,以用三个单独的查询替换目前正在使用PHP进行的操作。我有一个只有两个值的类别表:一个ID和一个名称。还有另外两个表,每个表都有一个引用第一个表中ID的外键。我需要从Categories表中获取所有值的列表,以及每个其他两个表中每个值的引用次数。我可以准确地从各个第二表的使用每个单独的查询得到计数:MySQL多个左连接导致不正确的计数值
SELECT nga_calevir_event_categories.*, COUNT(nga_calevir_events.event_id) AS event_total
FROM nga_calevir_event_categories
LEFT JOIN (nga_calevir_events)
ON nga_calevir_event_categories.id = nga_calevir_events.event_category
GROUP BY nga_calevir_event_categories.id;
和
SELECT nga_calevir_event_categories.*, COUNT(nga_usermeta.user_id) AS member_total
FROM nga_calevir_event_categories
LEFT JOIN (nga_usermeta)
ON (nga_usermeta.meta_value = nga_calevir_event_categories.id
AND nga_usermeta.meta_key = 'category_id')
GROUP BY nga_calevir_event_categories.id;
然而,当我尝试这些查询它开始给两个不正确的结果结合起来计数。这是联合查询:
SELECT nga_calevir_event_categories.*,
COUNT(nga_calevir_events.event_id) AS event_total,
COUNT(nga_usermeta.user_id) AS member_total
FROM nga_calevir_event_categories
LEFT JOIN (nga_calevir_events)
ON nga_calevir_event_categories.id = nga_calevir_events.event_category
LEFT JOIN (nga_usermeta)
ON (nga_usermeta.meta_value = nga_calevir_event_categories.id
AND nga_usermeta.meta_key = 'category_id')
GROUP BY nga_calevir_event_categories.id;
它似乎是第一行的计数加倍。我一直在试验这个几个小时,现在我无法弄清楚。有任何想法吗?如果您需要更多信息来帮助我,请告诉我。