2

我怎样才能离开加入另一个嵌套表?

第一个查询,

SELECT *
FROM category AS a
WHERE a.type = 'content'

结果,

category_id  type       code
1            content    content_1
2            content    content_2
3            content    content_3

第二次查询,

SELECT*
FROM content AS c

LEFT JOIN article_has_content AS x
ON x.content_id = c.content_id

WHERE x.article_id = '4'

结果,

category_id  value       article_id
1            xxa         4
2            xxb         4

我追求的结果,

category_id  type       code          value
1            content    content_1     xxa
2            content    content_2     xxb
3            content    content_3     NULL

第三个查询,

SELECT*
FROM 
(
    SELECT *
    FROM category AS a
    WHERE a.type = 'content'
) a
LEFT JOIN b
(
    SELECT*
    FROM content AS c

    LEFT JOIN article_has_content AS x
    ON x.content_id = c.content_id

    WHERE x.article_id = '4'
) b
ON b.category_id = a.category_id

错误,

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用

附近 '( SELECT* FROM content AS c

LEFT JOIN article_has_content AS x
ON x.content' at line 9
4

3 回答 3

2

你几乎是对的:

SELECT *
FROM 
(
    SELECT *
    FROM category AS a
    WHERE a.type = 'content'
) a
LEFT JOIN                              -- the alias name here was wrong
(
    SELECT*
    FROM content AS c

    LEFT JOIN article_has_content AS x
    ON x.content_id = c.content_id

    WHERE x.article_id = '4'
) b                                    -- and you had the alias already here at the right position
ON b.category_id = a.category_id
于 2014-07-19T14:18:38.230 回答
1

您将别名放在子查询之后。但总的来说,您的查询过于复杂。我认为这可以满足您的要求:

SELECT c.category_id, c.type, c.code, con.value
FROM category c left join
     content con
     on c.category_id = con.category_id left join
     article_has_content ahc
     on con.content_id = ahc.content_id and
        ahc.article_id = '4';
于 2014-07-19T14:19:05.980 回答
-1

如何组合这两个查询,如下所示:

SELECT*
FROM content AS c

LEFT JOIN article_has_content AS x
ON x.content_id = c.content_id

LEFT JOIN category a ON a.category_id =  c.category_id AND a.type = 'content'

WHERE x.article_id = '4'
于 2014-07-19T14:20:05.520 回答