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