两个问题。
一:我怎样才能将两张桌子连在一起,这不是原来的FROM'x'桌子?
示例:抓取所有报告和用户级别名称。
Report
id | user_id
1 1
User
id | level_id
1 1
Level
id | level_name
1 Admin
SELECT report.id,
report.user_id,
level.name
FROM report
INNER JOIN user
ON report.user_id=user.id
INNER JOIN level
ON user.level_id=level.id
似乎不起作用。
二:如何连接表不是1-1而是1-many?
说我想:
SELECT * FROM user JOIN report ON user.id=report.user_id WHERE user.id='4'
但只加入日期desc命令的最新报告?
我知道我似乎要求你为我做我的工作,但我只需要知道用什么来完成这个,不一定是你编码。感谢。
更新
第一个问题:固定,谢谢 第二个问题:
我会告诉你我的查询更有意义,我没有解释清楚。我的意思是很多关系,我抓住了一个用户列表及其最新报告!
SELECT
user.id
FROM
user
<< INNER JOINS ON OTHER TABLES >>
INNER JOIN
(
SELECT
report.id
FROM
report
WHERE user.id=report.user_id
ORDER BY
date
DESC
LIMIT 1
)
答案 0 :(得分:2)
关于你的第二个问题:
的MySQL式:
SELECT *
FROM user
INNER JOIN report re
ON re.id = (SELECT id
FROM report
WHERE user_id=user.id
ORDER BY report.date DESC
LIMIT 1)
WHERE user.id='4'
答案 1 :(得分:0)
一:对我来说很好看,但不应该是SELECT子句中的level.level_name吗?
二:如果您只是想要最新的报告,那就像......
SELECT TOP 1 * FROM user JOIN report ON user.id=report.user_id WHERE user.id='4' order by report.date desc