从多个表中查询MySQL?

时间:2016-06-19 09:57:51

标签: php mysql sql

我有两个名为table_1table_2的表格。架构有点如下。

table_1

+----+--------+-----+------------+
| id | reg_no | ... | table_2_id |
+----+--------+-----+------------+

table_2

+----+-----+
| id | ... |
+----+-----+

table_2_id中的table_1列引用了id中的table_2列。现在,我必须获取特定table_2_id的{​​{1}},然后使用reg_notable_2_id获取数据。

我目前按以下方式执行此操作。

table_2

这是正确的方法吗?是否有其他更有效的查询来执行此任务?

3 个答案:

答案 0 :(得分:1)

使用连接的查询

SELECT t2.* 
FROM table_1 t1
JOIN table_2 t2 ON t1.table_2_id = t2.id
WHERE t2.t1reg_no = ?

答案 1 :(得分:0)

尝试

id   reg_no   table_2_id
1     001        1
2     002        2
3     003        4 
4     004        7
5     005        8

实施例

<强> TABLE_1

id  column_test
1      A
2      B
3      C
4      D
5      E
6      F
7      G

<强> TABLE_2

SELECT T2.* FROM table_2 T2 
LEFT JOIN table_1 T1 ON T1.table_2_id = T2.id 
WHERE T1.reg_no = 003;

<强>查询

id  column_test
4     D

<强>输出

new Chart(ctx, {type: 'bar', data: barChartData,
  options:{ 
    scales: {
      yAxes: [{
        ticks: {
          stepSize: 1
        }
      }]
    }
  }
});

答案 2 :(得分:0)

使用这样的一个查询执行此操作应该更有效:

SELECT table_2.* 
FROM table_1 LEFT JOIN table_2 ON table_1.table_2_id=table_2.id 
WHERE table_1.reg_no = ?

table_1 LEFT JOIN table_2 ON table_1.table_2_id=table_2.id将加入table_1和table_2。 更具体地说,它将创建一个表,其中包含table_1和table_2中的所有列 然后它会从table_1中输入所有行。同样,当table_2中有一行,其id与 table_2_id它也将填充tables_2的列。

以上操作仅限于table_1.reg_no = ?

的行

最后使用SELECT table_2.*,我们只会获得table_2中的列,如您的示例所示。