1

我正在尝试将我的数据库上的两个查询产生的结果结合起来......

q1:

SELECT * FROM werkgevers JOIN werkgevers_branches ON werkgevers.werkgever_id = werkgevers_branches.werkgever_id JOIN plaatsen ON werkgevers.plaats_id = plaatsen.plaats_id JOIN branches ON werkgevers_branches.branche_id = branches.branche_id GROUP BY werkgevers_branches.werkgever_id

q2:

SELECT werkgever_id, COUNT(werkgever_id) AS aantalvacatures FROM vacatures GROUP BY werkgever_id

... 像这样:

SELECT * FROM (
SELECT * FROM werkgevers JOIN werkgevers_branches ON werkgevers.werkgever_id = werkgevers_branches.werkgever_id JOIN plaatsen ON werkgevers.plaats_id = plaatsen.plaats_id JOIN branches ON werkgevers_branches.branche_id = branches.branche_id GROUP BY werkgevers_branches.werkgever_id
) AS tbl1
LEFT OUTER JOIN 
(
    SELECT * FROM (
        SELECT werkgever_id, COUNT(werkgever_id) AS aantalvacatures FROM vacatures GROUP BY werkgever_id
    ) AS tbl2
)
USING (werkgever_id)

但我不断收到错误

#1248 - 每个派生表都必须有自己的别名

我不确定我应该在哪里命名任何派生表,有什么建议吗?

4

1 回答 1

2

您的 LEFT OUTER JOIN 派生表需要一个别名。尝试这个:

select *
from (
    select *
    from werkgevers
    join werkgevers_branches on werkgevers.werkgever_id = werkgevers_branches.werkgever_id
    join plaatsen on werkgevers.plaats_id = plaatsen.plaats_id
    join branches on werkgevers_branches.branche_id = branches.branche_id
    group by werkgevers_branches.werkgever_id
    ) as tbl1
left outer join (
    select *
    from (
        select werkgever_id,
            COUNT(werkgever_id) as aantalvacatures
        from vacatures
        group by werkgever_id
        ) as tbl2
    ) a USING (werkgever_id)

注意最后一行的别名a

于 2012-06-04T14:58:02.007 回答