Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql-如何组合多个表?_Mysql_Sql - Fatal编程技术网

mysql-如何组合多个表?

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

我有tbl_房间:

| 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