Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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 将3个表连接在一起_Mysql_Sql - Fatal编程技术网

Mysql 将3个表连接在一起

Mysql 将3个表连接在一起,mysql,sql,Mysql,Sql,我需要从这3个表中检索数据 users +----------+-----------+ | username | last_name | +----------+-----------+ | name | last name | +----------+-----------+ messages +----+---------+-----------+---------+------+---------------------+ | id | to_user | from_user |

我需要从这3个表中检索数据

users
+----------+-----------+
| username | last_name |
+----------+-----------+
| name     | last name |
+----------+-----------+
messages
+----+---------+-----------+---------+------+---------------------+
| id | to_user | from_user | message | read | sent                |
+----+---------+-----------+---------+------+---------------------+
| 12 |      12 |        10 | 1       |    0 | 2012-01-10 17:06:14 |
+----+---------+-----------+---------+------+---------------------+
all_messages
+----+--------+--------+
| id | user_1 | user_2 |
+----+--------+--------+
|  1 |     10 |     12 |
+----+--------+--------+
我需要选择所有这些数据,但仅当用户_1等于随机数时 用户_2等于from_user,用户_2等于users.id现在如果只有两个表,我选择所需数据没有问题,但我不知道如何连接表3,表3是用户,我的当前查询不包括用户表:

SELECT `all_messages`.`user_1`, `messages`.*
FROM `all_messages`
JOIN `messages` 
ON (`all_messages`.`user_2` = `messages`.`from_user`) 
WHERE `all_messages`.`user_1` = '12'
ORDER BY `messages`.`id` DESC LIMIT 2
编辑谢谢你的回答它工作得很好


但是,如果我只需要从消息中获取最后一条记录,因为现在它获取所有记录,其中all_messages.user_2=messages.from_user,我只需要获取最后一条最新记录,你只需要添加一个新加入,如下所示:

SELECT `all_messages`.`user_1`, `messages`.*
FROM `all_messages`
JOIN `messages` ON (`all_messages`.`user_2` = `messages`.`from_user`) 
JOIN users      ON (...write your condition here...)
WHERE `all_messages`.`user_1` = '12'
ORDER BY `messages`.`id` DESC LIMIT 2

您只需添加一个新联接,如下所示:

SELECT `all_messages`.`user_1`, `messages`.*
FROM `all_messages`
JOIN `messages` ON (`all_messages`.`user_2` = `messages`.`from_user`) 
JOIN users      ON (...write your condition here...)
WHERE `all_messages`.`user_1` = '12'
ORDER BY `messages`.`id` DESC LIMIT 2

您只需使用第三个表向查询中添加另一个联接:

SELECT `all_messages`.`user_1`, `messages`.*
FROM `all_messages`
JOIN `messages` 
ON (`all_messages`.`user_2` = `messages`.`from_user`) 
JOIN  `users`
ON (`users`.`id` = `all_messages`.`user_2`)
WHERE `all_messages`.`user_1` = '12'
ORDER BY `messages`.`id` DESC LIMIT 2

您只需使用第三个表向查询中添加另一个联接:

SELECT `all_messages`.`user_1`, `messages`.*
FROM `all_messages`
JOIN `messages` 
ON (`all_messages`.`user_2` = `messages`.`from_user`) 
JOIN  `users`
ON (`users`.`id` = `all_messages`.`user_2`)
WHERE `all_messages`.`user_1` = '12'
ORDER BY `messages`.`id` DESC LIMIT 2

用户中是否有主列?用户中是否有主列?