Mysql 将3个表连接在一起
我需要从这3个表中检索数据Mysql 将3个表连接在一起,mysql,sql,Mysql,Sql,我需要从这3个表中检索数据 users +----------+-----------+ | username | last_name | +----------+-----------+ | name | last name | +----------+-----------+ messages +----+---------+-----------+---------+------+---------------------+ | id | to_user | from_user |
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
用户中是否有主列?用户中是否有主列?