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子句中除第一个表外的所有表进行筛选。完成此操作。它不输出我需要的空值。