【问题标题】:SELECT loop within SELECT loop [duplicate]SELECT循环内的SELECT循环[重复]
【发布时间】:2018-08-22 07:45:20
【问题描述】:

我有一个 PHP/MySQL 场景,我想显示一个事件列表,但也显示分配给一个事件的所有用户。在 MySQL 中,我有一个 eventseventusersusers 表。

我可以 SELECT event_id, event_name FROM events 然后循环遍历 PHP 中的结果,然后在每个结果循环中循环 SELECT user_id FROM eventusers WHERE event=[event_id] 以获取特定事件的用户。

我想知道是否有办法在一个 SQL 查询中执行此操作(而且它的性能也不错)所以我从 events 表中获取数据以及从 @987654328 中附加到事件的所有用户 ID @ 桌子。比如:

event id | event name    | Users from eventusers table
------------------------------------------
1        | Soccer match  | 3,56,79
2        | Cycling       | 46,77,88,126,78

【问题讨论】:

  • 对我来说听起来像是 JOIN...
  • 这与连接无关。它是关于能够从主表的每个结果行中的相关表中检索结果列表。我已将问题改进得更清楚。

标签: php mysql sql


【解决方案1】:

您应该使用 JOIN 语句来合并您的表:

SELECT column_name(s)
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;

在您的情况下,您应该执行以下操作:

SELECT event_name, user
FROM events
INNER JOIN eventusers
ON events.event_id = eventusers.event_id

希望对你有帮助

【讨论】:

  • 请参阅改写后的问题
【解决方案2】:

可以使用join函数:

select * from
table1 JOIN table2
ON table1.pk=table2.fk 

然后添加条件

where table1.column= something

但是您需要将两个表与一个列(.pk 和 .fk)连接起来,在这种情况下它可能是 eventuserid

select * from
events JOIN eventusers
ON events.eventuserid=eventusers.userid
where event.id= [event_id]

您还可以将 * 替换为您需要的列:tablename.column 并且您只会得到这些列值作为回报

对不起,我不明白关于 CSV 文件的第二部分,你能澄清一下吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-05
    • 2014-01-11
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 2015-03-02
    相关资源
    最近更新 更多