SELECT
fromData.name as fromname, toData.name as toName, prodData.prodname,
t1.`from_id`, t1.`to_id` , t1.`product_id` , t1.`title`, t1.`message`, t1.`senttime` , t1.`readstatus`, t1.`responded`, t1.`merchanthidden`
FROM `inquiries` as t1
INNER JOIN users as fromData on t1.from_id = fromData.id
INNER JOIN users as toData on t1.to_id = toData.id
INNER JOIN products as prodData on t1.product_id = prodData.id
WHERE t1.id=13
以上查询将3个表(查询,用户,产品)连接在一起,并从每个表中获取数据。
有时候产品中的商品可能是'表被删除。尝试通过已删除的产品ID加入产品表将导致查询失败。
有没有办法可以分配' prodData.prodname '如果产品表中缺少项目,则默认值并执行查询而不会失败?
答案 0 :(得分:0)
所以努力学习:)。在表'产品'上使用LEFT JOIN。 谢谢大家的帮助。
答案 1 :(得分:0)
' INNER JOIN'只获取两个表中的行,使用左外连接来获取缺失的行。
这里有一个很好的图表: LEFT JOIN vs. LEFT OUTER JOIN in SQL Server
答案 2 :(得分:0)
为什么不使用左连接内部连接, LEFT JOIN关键字返回左表(table1)中的所有记录,以及右表(table2)中的匹配记录。如果没有匹配,则结果从右侧为NULL。
SELECT
fromData.name as fromname, toData.name as toName, prodData.prodname,
t1.`from_id`, t1.`to_id` , t1.`product_id` , t1.`title`, t1.`message`, t1.`senttime` , t1.`readstatus`, t1.`responded`, t1.`merchanthidden`
FROM `inquiries` as t1
INNER JOIN users as fromData on t1.from_id = fromData.id
INNER JOIN users as toData on t1.to_id = toData.id
LEFT JOIN products as prodData on t1.product_id = prodData.id
WHERE t1.id=13