Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何左键联接另一个嵌套表?_Php_Mysql_Sql_Php 5.5 - Fatal编程技术网

Php 如何左键联接另一个嵌套表?

Php 如何左键联接另一个嵌套表?,php,mysql,sql,php-5.5,Php,Mysql,Sql,Php 5.5,如何左键联接另一个嵌套表 第一个问题, 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 category_id value article_id 1

如何左键联接另一个嵌套表

第一个问题,

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
category_id  value       article_id
1            xxa         4
2            xxb         4
第二个问题

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  type       code
1            content    content_1
2            content    content_2
3            content    content_3
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服务器版本对应的手册,以了解要使用的正确语法 近' 挑选* 从内容转换为c

LEFT JOIN article_has_content AS x
ON x.content' at line 9
你几乎是对的:

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

您将别名放在子查询之后。但总的来说,您的查询过于复杂。我想这正是你想要的:

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';

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

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'

该错误是MySQL错误,因此我删除了sql server标记。如果您将表定义放在SQL FIDLE上也会有所帮助。我在“on子句”@tealou中得到一个错误-1054-未知列“ahc.category_id”。我不得不猜测哪个表有category_id,因为您的问题在这一点上不清楚。它必须在内容上。谢谢您的编辑,但它不会输出我需要的空行。@tealou。关于左连接,我也错了。这些都是需要的。关键是对on子句中除第一个表外的所有表进行筛选。完成此操作。它不输出我需要的空值。