【发布时间】:2011-10-14 22:40:48
【问题描述】:
这是我目前的查询:
SELECT
`groups`.`id`,
`groups`.`name`,
`groups`.`description`,
`groups`.`members`,
`groups`.`image`,
FROM
`groups`
WHERE
`groups`.`name` LIKE '%a%'
OR
`groups`.`description` LIKE '%b%'
一切都按预期工作,但我需要另外选择一件事。问题是它存储在另一个表中,我不太擅长连接。这是第二个表结构:
group_members
-
group_id, -
user_id, -
status;
我需要为组选择指定的用户状态!可能吗?怎么样?
感谢您的建议!
编辑:
我需要显示所有组和每个组中的当前用户状态。
编辑#2:
假设user_id 设置为33。他键入aa 作为组名,在结果中他看到了名称中包含aa 的所有组。此外,在结果中是他在每个组中的状态。
ID Name Description Status
2 aa2 foobar 3
2 aa1 foobar 1
4 aa3 foobar
6 aa3 foobar
5 aa3 foobar 2
编辑#3:
这几乎是我需要的......
SELECT `groups`.`id`, `groups`.`name`, `groups`.`description`, `groups`.`members`, `groups`.`image`, `group_members`.`status`
FROM `groups`
LEFT JOIN `group_members`
ON (`group_members`.`group_id` = `groups`.`id`)
WHERE `group_members`.`user_id` = '33'
AND `groups`.`name` LIKE '%%'
OR `groups`.`description` LIKE '%%'
唯一的问题,我不选择我不是成员的组。有趣的原因...我确实使用了“左外”连接。
【问题讨论】:
-
是的,这是可能的,但我不明白你需要选择什么来写它......
-
看起来你把事情搞混了。每个组只有一个描述和一个图像,但成员很多。你想展示什么? 所有成员,每行重复所有每组数据?
-
在 where 子句中有 'group_members
.user_id` = '33' 条件将过滤没有此 user_id 的结果。如果您想要 user_id = 33 是成员或不是成员的所有组,请从 where 子句中删除此条件。