[英]MYSQL issue with join query
( group_id
, user_id
, group_name
, group_image
, group_description
, doi
) (
group_id
, user_id
, group_name
, group_image
, group_description
, doi
)
(9, 28, 'bbb', '1339660354imagesv.jpg', 'dfdsfsdf', '2012-06-14 13:22:34'),
(11, 1, 'cccc', '', '', '2012-06-14 14:49:56'),
(22, 1, '000', '', '', '2012-06-14 15:31:43');
news_id
, user_id
, group_id
, group_news
, doi
news_id
, user_id
, group_id
, group_news
, doi
(1, 1, 22, 'hi \n', '2012-06-14 16:20:36'),
(2, 1, 22, 'hello', '2012-06-14 16:21:59'),
(3, 1, 22, '1111', '2012-06-14 16:25:13'),
(4, 1, 22, 'jj', '2012-06-14 16:34:41'),
(5, 28, 9, 'hi', '2012-06-15 09:48:47');
tbl_groupmembers
groupmember_id
, group_id
, adder
, member
, doi
groupmember_id
, group_id
, adder
, member
, doi
(1, 9, 28, 1, '2012-06-14 13:22:35'),
(2, 9, 28, 66, '2012-06-14 13:22:35'),
(4, 11, 1, 2, '2012-06-14 14:49:56'),
(5, 11, 1, 28, '2012-06-14 14:49:56'),
(6, 11, 1, 62, '2012-06-14 14:49:56'),
(36, 22, 1, 28, '2012-06-14 16:15:41'),
(37, 22, 1, 62, '2012-06-14 16:16:55'),
(38, 22, 1, 66, '2012-06-14 16:18:35'),
(39, 22, 1, 70, '2012-06-14 16:19:33');
I run the query 我运行查询
SELECT tbl_groups.*,
COUNT (tbl_groupnews.news_id) AS cn1,
COUNT (tbl_groupmembers.group_id) AS cn2
FROM tbl_groups
LEFT JOIN tbl_groupnews ON tbl_groups.group_id = tbl_groupnews.group_id
LEFT JOIN tbl_groupmembers ON tbl_groupmembers.group_id = tbl_groups.group_id
WHERE (tbl_groups.user_id = 28 OR tbl_groupmembers.member = 28)
GROUP BY tbl_groups.group_id
My requirement is that I need get all the values from group, count of news and count of members WHERE user_id = 28 or member id = 28
. 我的要求是我需要从组,新闻计数和成员计数中获取所有值,其中
WHERE user_id = 28 or member id = 28
。
Can anyone help me to find a solution? 谁能帮我找到解决方案?
Try like this: 尝试这样:
SELECT tbl_groups.*,
COUNT (tbl_groupnews.news_id) AS cn1,
COUNT (tbl_groupmembers.group_id) AS cn2
FROM tbl_groups
LEFT JOIN tbl_groupnews ON tbl_groups.group_id = tbl_groupnews.group_id
AND tbl_groups.user_id = 28
LEFT JOIN tbl_groupmembers ON tbl_groupmembers.group_id = tbl_groups.group_id
AND tbl_groupmembers.MEMBER = 28
GROUP BY tbl_groups.group_id
If you select all columns from tbl_groups, they need to be in your group by statement 如果您从tbl_groups中选择所有列,则它们必须位于您的group by语句中
SELECT tbl_groups.*,COUNT(distinct tbl_groupnews.news_id) as cn1,
COUNT(distinct tbl_groupmembers.group_id) as cn2
FROM tbl_groups
LEFT JOIN tbl_groupnews ON tbl_groups.group_id=tbl_groupnews.group_id
LEFT JOIN tbl_groupmembers ON tbl_groupmembers.group_id=tbl_groups.group_id
WHERE (tbl_groups.user_id = 28 or tbl_groupmembers.member=28)
GROUP BY tbl_groups.group_id,tbl_groups.user_id, tbl_groups.group_name, tbl_groups.group_image, tbl_groups.group_description, tbl_groups.doi
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.