mysql-如何组合多个表?
我有tbl_房间:mysql-如何组合多个表?,mysql,sql,Mysql,Sql,我有tbl_房间: | room_no | room_type | ---------- ----------- | 101 | Lab | | 102 | General | tbl_教师: | t_id | t_lname | ---------- ---------- | 001 | Asd | | 002 | Qwe | | 003 | Ghu | tbl_科目 | code | desc
| room_no | room_type |
---------- -----------
| 101 | Lab |
| 102 | General |
tbl_教师:
| t_id | t_lname |
---------- ----------
| 001 | Asd |
| 002 | Qwe |
| 003 | Ghu |
tbl_科目
| code | desc |
---------- ----------
| M101 | Fund |
我想要的是将这些表中的一列合并到一个查询中
应该是这样的:
| room_no | t_id | code |
---------- ------ -------
| 101 | 001 | M101 |
| 102 | 002 | |
| | 003 | |
您最好在所有3个表中设置
room\u no
列,然后加入:
SELECT t1.room_no, t2.t_id, t3.`code`
FROM tbl_room t1
LEFT JOIN FROM tbl_teacher t2
ON t1.room_no = t2.room_no
LEFT JOIN FROM tbl_subject t3
ON t1.room_no = t3.room_no
不过,为了好玩,这里有一个查询,它提供了数据样本,为您带来了预期的结果:
但只有当我们知道
tbl\u teacher
在所有3个表之间保留最大记录,并且我为tbl\u teacher
设置了右连接时,它才起作用。但是这个查询和OP中描述的目标都没有意义。您应该通过一些具有某种关系的列相互链接表:一对一、一对多、多对多。是的。。试一试,看看你是怎么做到的。我已经试过了,但这不是我需要的‘从tbl_房间t1选择t1.room_否,t2.t_id,tbl_教师t2;’您是否有到目前为止您尝试过的代码示例,我们可以看到您实际上已经投入了一些精力来解决这个问题?有很多方法:从两个表中进行选择,在它们之间进行连接或并集,等等。您的问题太广,做一些研究。但是请注意,这里没有任何用于连接的公共属性:S
SELECT t1.room_no, t2.t_id, t3.`code`
FROM (
SELECT *, @idx1:=IFNULL(@idx1,0)+1 as idx
FROM tbl_room
) t1
RIGHT JOIN (
SELECT *, @idx2:=IFNULL(@idx2,0)+1 as idx
FROM tbl_teacher
) t2
ON t1.idx = t2.idx
LEFT JOIN (
SELECT *, @idx3:=IFNULL(@idx3,0)+1 as idx
FROM tbl_subject
) t3
ON t3.idx = t2.idx