SQL查询帮助 - 加入第二个表,可能吗?

时间:2011-07-15 17:23:16

标签: sql

两个问题。

一:我怎样才能将两张桌子连在一起,这不是原来的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
      )

2 个答案:

答案 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