多个查询mysql的问题

时间:2012-05-06 17:10:03

标签: mysql

我有两张桌子 - 一张名为“朋友”和其他“事件”。

friends包含iduser_idfriend_id

events包含iduser_idtitle_event

我在“活动”中注册了六个活动:我的第二个,第二个和第二个是另一个朋友的朋友。

什么查询会在“朋友”表格中回复我的朋友以及我的事件和朋友的事件?

我正在使用下面的查询,它只返回朋友的事件。如何更改它以返回我的活动和我的朋友?

查询:

SELECT *
 FROM (
       SELECT a.user_id, a.friend_id
         FROM tb_friend a
       WHERE a.user_id = 1
       ) friends, 
tb_events e
WHERE e.user_id = friends.friend_id;

2 个答案:

答案 0 :(得分:0)

这是你要找的吗?

SELECT *
FROM (
    SELECT a.user_id, a.friend_id
    FROM tb_friend a
    WHERE a.user_id = 1
    ) friends, 
tb_events e
WHERE e.user_id = friends.friend_id OR e.user_id = 1;

我在这里做的唯一更改是添加OR e.user_id = 1,这应该让MySQL在结果集中包含您自己的事件。

答案 1 :(得分:0)

您遇到的问题是没有原始“User_ID = 1”的条目,只有朋友...... Daan提供的示例使用的WHERE子句显然仍然不适合您。我建议您的内部查询是一个UNION,将您和您的朋友包含在一个结果中......这样,您就有一个合格的列表...如果这仍然不起作用,则通过显示一些没有实际名称的示例数据(因为无论如何,你所有的样本基本都是ID,没有什么特别的隐藏),它可以帮助其他人更好地提供解决方案。如果您不能灵活地提供此类样本数据,那么您从此处和未来获得的答案可能会非常有限......

SELECT *
   FROM 
      ( select 1 as User_ID
        UNION
        SELECT a.friend_id AS User_ID
           FROM tb_friend a
           WHERE a.user_id = 1
       ) QualifiedPeople
      join tb_events e
         on QualifiedPeople.User_ID = e.User_ID

现在,如果你只想要不同的事件,不要做一张显示所有人的外卡,因为参加同一事件的多个人实际上会为每个人显示该事件,并且可以显示你的8对6记录。 ..再次,没有看到样本数据,没有人可以诚实地回答它。

SELECT distinct e.id, e.title_event
   FROM ... same rest of query from above