mysql - 如何使用一个查询查询相关的三个相关表

标签 mysql join

我有以下三个表格。关系是每个 report_paramreport_frequency 使用中间表 report_freq_map 绑定(bind)在一起。是否可以构建一个 SQL,以便用户可以使用 frequency='daily' 之类的约束来选择所有 report_param 行,而不是使用 frequency='1'。

谢谢, -彼得

mysql> describe report_params;
+---------------+------------------+------+-----+---------+----------------+
| Field         | Type             | Null | Key | Default | Extra          |
+---------------+------------------+------+-----+---------+----------------+
| id            | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| test_level    | varchar(45)      | NO   |     | NULL    |                |
| sequence_name | varchar(45)      | NO   |     | NULL    |                |
| step_name     | varchar(45)      | NO   |     | NULL    |                |
| descriptions  | text             | NO   |     | NULL    |                |
+---------------+------------------+------+-----+---------+----------------+
mysql> describe report_frequency;
+-----------+------------------+------+-----+---------+----------------+
| Field     | Type             | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+----------------+
| id        | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| frequency | varchar(25)      | YES  |     | NULL    |                |
+-----------+------------------+------+-----+---------+----------------+

mysql> describe report_freq_map;
+-----------+---------+------+-----+---------+-------+
| Field     | Type    | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| report_id | int(11) | NO   | PRI | 0       |       |
| freq_id   | int(11) | NO   | PRI | 0       |       |
+-----------+---------+------+-----+---------+-------+

最佳答案

尝试使用 JOIN 连接表:

SELECT report_params.*
FROM report_params
JOIN report_freq_map ON report_id = report_params.id
JOIN report_frequency ON freq_id = report_frequency.id
WHERE frequency = 'daily'

关于mysql - 如何使用一个查询查询相关的三个相关表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3579208/

相关文章:

mysql - 如何选择具有 MAX(日期) 的行并将每一行与之前的价格连接起来

php - 为什么 mkdir 在没有将递归设置为 true 的情况下不起作用?

Mysql - Phpmyadmin - 不处理 SQL 窗口中的所有输入

mysql - Laravel 5.4 原始连接查询

php - 有哪些方法可以在 PHP 中运行 MySQL 查询并将结果输出到更少空间的数组中?

php - 为上传的文件名和mysql数据库生成相同的uniqid

mysql - 选择一个表中的 ID 存在于一个或多个其他表中的记录

mysql - 如何从以下结果中仅获取最新日期?

mysql - 多表连接耗时过长

c# - 左加入 3 个表 mysql