【问题标题】:How to combine 2 queries in combination with 2 tables?如何将 2 个查询与 2 个表结合起来?
【发布时间】:2020-01-25 10:49:32
【问题描述】:

我有两个名为“users”的 MySQL 表

id  name          role            
1   Mark          1
2   David         2
3   Donald        1
4   Harry         1

并命名为“事件”

id  date        user_id
1   2020-02-01  1
2   2020-02-01  3
3   2020-02-01  2
4   2020-02-04  1
5   2020-02-01  4

说明:用户可以制作事件。如果用户发起事件,de 事件会自动获取发起该事件的用户的 user_id。所以在 users 中的 id 列和 events 中的 user_id 列之间是有联系的。

我的问题:我已经有一个过滤器选项来搜索特定日期的事件,但我想将此查询与您还可以过滤用户角色的查询结合起来。因此,如果我过滤日期:2020-02-01 和角色:1,则它与下一个相呼应:

id  date         user_id
1   2020-02-01   1
2   2020-02-01   3
5   2020-02-01   4

我该怎么做?

我已经尝试过 UNION 功能,但不起作用:

$query = "SELECT * FROM events WHERE date = '$date' UNION SELECT * FROM users WHERE role = '$role'";

提前非常感谢!

【问题讨论】:

  • 你想加入两个有条件的表吗?
  • meta.stackoverflow.com/questions/333952/…。另外,请参阅 sql 注入以及准备和绑定查询的重要性
  • 请提供accounts表结构及其与users表的关系
  • @Bergin 是的,你是对的。
  • @SlavaRozhnev 抱歉我打错了。

标签: mysql


【解决方案1】:

你应该使用下一个查询:

SELECT * 
FROM events 
JOIN users ON events.user_id = users.id
WHERE events.date = '$date' AND users.role = '$role';

【讨论】:

  • 非常感谢,这就是我要找的地方!
【解决方案2】:

你应该尝试加入查询而不是联合

【讨论】:

  • 您能否添加一个示例说明如何执行此操作?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多