我有两个名为table_1
和table_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_no
从table_2_id
获取数据。
我目前按以下方式执行此操作。
table_2
这是正确的方法吗?是否有其他更有效的查询来执行此任务?
答案 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中的列,如您的示例所示。