我有两个表,一个用于内容,一个用于图像。
我的问题是:图像不是必填字段,但如果图像存在,则列i.type必须是指定的数字。
我使用的查询也会返回其他一些具有相同ID的表格中的内容(我知道它错了,但我现在只有它)。
这是查询
SELECT e.*, i.imagem, i.folder
FROM event e
LEFT JOIN img_rel i ON e.id = i.rel
WHERE e.slug = 'slug'
AND e.type = 'even';
有没有办法做到这一点,还是我必须使用PHP过滤它?
答案 0 :(得分:2)
会
join ... on ... and (i.imagem IS NULL or i.type = 'myspecialvalue')
是你需要的吗?
答案 1 :(得分:1)
您可以在查询中使用CASE
SELECT
e.*,
CASE
WHEN i.imagem IS NOT NULL
AND i.type = 'your number'
THEN i.imagem
ELSE NULL
END AS imagem,
i.folder
FROM
event e
LEFT JOIN img_rel i
ON e.id = i.rel
WHERE e.slug = 'slug'
AND e.type = 'even';
答案 2 :(得分:0)
您可以根据需要为Join的On子句使用任意数量的列。您甚至可以在Join上添加静态过滤器。
Select *
From Table1 t1 Left Join
Table2 t2 On t1.col1 = t2.col2
And t1.col2 = t2.col2
And t1.col3 = 'something static'
Where t1.col1 = 'this will match both col1 and t2.col1'