Php 连接查询的MYSQL问题 tbl_集团

Php 连接查询的MYSQL问题 tbl_集团,php,mysql,sql,join,left-join,Php,Mysql,Sql,Join,Left Join,(组标识,用户标识,组名称,组图像,组描述,doi) tbl_集团新闻 news\u-id,user\u-id,group\u-id,group\u-news,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:4

组标识
用户标识
组名称
组图像
组描述
doi

tbl_集团新闻
news\u-id
user\u-id
group\u-id
group\u-news
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');
(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');
(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');
tbl_集团成员
groupmember\u id
groupid
adder
member
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');
(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');
(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');
我运行查询

  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
我的要求是我需要从组、新闻计数和成员计数
中获取所有值,其中user_id=28或member id=28

有人能帮我找到一个解决方案吗?

试着这样做:

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 

如果从tbl_组中选择所有列,则它们需要位于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

tbl_groupnews在哪里?更改了表名“tbl_groupnews”,如果我们从
tbl_groupmembers
中删除(36,22,1,28,'2012-06-14 16:15:41'),那么第三个组将再次出现。如果我们删除上面的行,组id 22将不会出现在我们的结果中。很抱歉,我没有时间测试它,但是在计数中添加“distinct”应该会有一些魔力:)