0

我有 3 个 mysql 表:*users"、"groups"、"community"。

  • “用户”:uid、用户名、密码等。
  • “组”:gid、group_name、created 等。
  • “社区”:cid、uid(外国)、gid(外国)

现在我想列出所有组及其 gid、groups_name、created 等属性(动态)。没关系。但我还想添加一列,显示特定用户是否是该组的成员。

像这样:(此表对特定用户是正确的,例如:uid = 4)

gid | group_name | created | ismember
1   | g1         | 2001    | true
2   | g2         | 2003    | true
3   | g3         | 2010    | false
...

重要的是,一个组只显示一次。用户已登录,所以我们知道它的“uid”。

这是我的两个 mysql 片段:

//get groups with their uids shown.
SELECT groups.*, community.uid
FROM groups, community
WHERE groups.gid = community.gid;

//get user-joined groups
SELECT groups.*
FROM groups
WHERE gid IN (
  SELECT gid
  FROM community
  WHERE uid = " . $uid . "
);

那么有没有办法只用一个mysql查询来做到这一点?还是我必须以某种方式将这两个请求分开并使用 php if 子句?如果是这样,我该怎么办?

4

1 回答 1

1

您可以使用像 THIS sql fiddle http://sqlfiddle.com/#!2/bd596/4/0这样的外连接

然后任何带有 null uid 的东西都不是它们的成员

于 2013-07-09T09:59:15.127 回答