Mysql SQL从多个表中选择返回可用的内容

Mysql SQL从多个表中选择返回可用的内容,mysql,sql,database,pdo,innodb,Mysql,Sql,Database,Pdo,Innodb,我有三个表,一个用于用户,一个用于图像,还有一个用于将图像映射到用户。以下是我的问题(简化): 只要有数据要从所有表中提取,此查询将返回fine。如果没有为用户分配图像,则图像或mapimagestousers表中将没有为用户分配的条目,查询将返回一个空集(可以理解)。如何查询数据库,以便在没有指定图像的情况下,仍能从用户表中获取任何内容?切勿在from子句中使用逗号。始终使用正确、明确、标准的JOIN语法 那你就知道外连接了 你想要: SELECT * FROM tb_users u LEFT

我有三个表,一个用于用户,一个用于图像,还有一个用于将图像映射到用户。以下是我的问题(简化):

只要有数据要从所有表中提取,此查询将返回fine。如果没有为用户分配图像,则图像或mapimagestousers表中将没有为用户分配的条目,查询将返回一个空集(可以理解)。如何查询数据库,以便在没有指定图像的情况下,仍能从用户表中获取任何内容?

切勿在
from
子句中使用逗号。始终使用正确、明确、标准的
JOIN
语法

那你就知道外连接了

你想要:

SELECT *
FROM tb_users u LEFT JOIN
     tb_mapimagestousers miu
     ON miu.userid = u.id LEFT JOIN
     tb_images i
     ON miu.imgid = i.id
WHERE u.id = :userid;
切勿在
FROM
子句中使用逗号。始终使用正确、明确、标准的
JOIN
语法

那你就知道外连接了

你想要:

SELECT *
FROM tb_users u LEFT JOIN
     tb_mapimagestousers miu
     ON miu.userid = u.id LEFT JOIN
     tb_images i
     ON miu.imgid = i.id
WHERE u.id = :userid;

当您将这些连接串在一起时,它是否将所有返回的结果视为一个表?因此,如果我先做一组左连接,然后再做一个右连接,右连接将把整个左连接字符串视为一个表,就组合结果的方式而言,对吗?还有为什么不在
FROM
子句中使用逗号的任何特殊原因?因为正确的SQL语法是使用显式
join
s。逗号只是20世纪70年代和80年代定义的原始语言的延续。当将这些连接串在一起时,它是否将所有返回的结果视为一个表?因此,如果我先做一组左连接,然后再做一个右连接,右连接将把整个左连接字符串视为一个表,就组合结果的方式而言,对吗?还有为什么不在
FROM
子句中使用逗号的任何特殊原因?因为正确的SQL语法是使用显式
join
s。逗号只是20世纪70年代和80年代定义的原始语言的延续。