我有两个表项和内容。
items:|ID|menu|img
表
itemcontent |ID|parent|title|content
内容保留与包含标题和内容的父级的项目配对
我想搜索所有项目,并打印出itemcontent表中没有标题的记录 标题将打印为“空”。 所以打印输出看起来像:
title: test1 and ID: items.ID=1 title: Empty and ID: items.ID=2 title: Empty and ID: items.ID=3 title: test2 and ID: items.ID=4 title: Empty and ID: items.ID=5 etc...
我尝试了以下内容,然后尝试了一些但无济于事:
SELECT items.*, itemcontent.title, itemcontent.content
FROM items, itemcontent
WHERE itemcontent.title LIKE '%$search%'
AND itemcontent.parent = items.ID
order by title ASC
非常感谢一点帮助
答案 0 :(得分:1)
由于你想要项目中的所有行,无论它们是否在itemcontent中匹配,加上来自itemcontent的字段,如果匹配,你需要使用OUTER JOIN:
SELECT items.*, COALESCE(itemcontent.title, 'empty'), itemcontent.content
FROM items LEFT OUTER JOIN itemcontent ON itemcontent.parent = items.ID
WHERE (itemcontent.title LIKE '%$search%' OR itemcontent.title IS NULL)
ORDER BY items.ID, itemcontent.title ASC
SQL方言之间存在细微差别(例如,并非所有版本都有COALESCE),因此如果您想要更精确的答案,请说明您正在使用哪种产品。
答案 1 :(得分:0)
为了确保你可能想要ORDER BY itemcontent.title而不只是title或select itemcontent.title AS title?您是否在项目表中有一个名为title的字段?