目前,我需要了解如何列出我的(collaborator_a)协作者(collaborator_b)、协作者、及其事件实例。
它目前的工作方式:
代表“合作者B”
这都是为“合作者A”创建的,但是ID被镜像了。
结束。
我的桌子看起来是这样的:
collaborator
id collaborator_a collaborator_b event_instance_id_a event_instance_id_b
-- -------------- -------------- ------------------- -------------------
1 1 2 1 2
2 2 1 2 1
3 1 3 1 3
4 3 1 3 1
5 6 9 4 5
6 9 6 5 4
7 1 9 6 5
8 9 1 5 6event_instance
id user_id description
-- ------- --------------
1 1 Some event desc...
2 2 Some event desc...
3 3 Some event desc...
4 6 Some event desc...
5 9 Some event desc...
6 1 Some event desc... 用户
id username
-- --------
1 username_1
2 username_2
3 username_3
4 username_4
5 username_5
6 username_6
7 username_7
8 username_8
9 username_9我能够获得(*collaborator_a*)自己的协作者(*collaborator_b*)及其事件实例,如下所示:
变量
$user_id = 1
$event_instance_id_a = 2MySQL
SELECT c.*, u.*, e.*
FROM (collaborator c)
JOIN event_instance e ON c.event_instance_id_b = e.id
JOIN user u ON c.collaborator_b = u.id
WHERE c.event_instance_id_a = $event_instance_id_a
AND c.collaborator_a = $user_id有没有一个友好的人可以帮我把我的合作者的合作者带到一个特定的事件实例ID?
发布于 2013-02-21 08:58:41
不太确定你想要什么..。但是,如果您想让事件的所有贡献者都参与进来,这应该是有效的http://sqlfiddle.com/#!3/2d1a0/1
create table event_collaborators (
event_id int,
collaborator_id int
);
create table events (
id int,
user_id int,
description varchar(255) not null
);
create table users (
id int,
username varchar(25) not null
);我已经修改了你的专栏,以便更容易理解,尽管这样做可能不会完全回答你的问题。
SELECT ec.*, e.*, u.username
FROM event_collaborators AS ec
INNER JOIN events AS e ON ec.event_id = e.id
INNER JOIN users as u ON ec.collaborator_id = u.id
WHERE ec.event_id = 3;使用*是一个非常糟糕的主意,但为了演示目的,这是可以的。我也不喜欢两个大INNER JOINS的想法,所以我会在event_collaborators映射表上使用一个索引,如果可能的话将查询分开。
https://stackoverflow.com/questions/14985725
复制相似问题