表格颜色
id
value
name
表格涵盖
id
headline_de
headline_en
subline_de
subline_en
backgroundcolor_id
foregroundcolor_id
sql查询
select covers.*,
c1.name AS backgroundcolor_name,
c1.value AS backgroundcolor_value,
c2.name AS foregroundcolor_name,
c2.value AS foregroundcolor_value
from covers
join colors AS c1 on covers.backgroundcolor_id = c1.id
join colors AS c2 on covers.foregroundcolor_id = c2.id
这是做什么的?
我将一些颜色与名称“颜色”存储在一起。然后我存储一些英语/德语标题+子行,并在表格“封面”中定义背景和前景色。 查询现在从“colors”表中加入正确的值 - 工作完美。
我需要改进的内容
当我删除任何颜色时,所以缺少颜色的ID - 查询会弹出一个PHP错误,或者只是不显示缺少颜色ID的行。
但是因为我想保留封面的sql结果 - 所以我可以显示封面,无论我是否有背景/前景色。有没有办法检查查询是否颜色不存在>替换为修复值以防止错误颜色ID的受影响封面出现PHP错误或缺少行结果?
答案 0 :(得分:0)
无需撰写as on colors AS c1
select covers.*,
c1.name AS backgroundcolor_name,
c1.value AS backgroundcolor_value,
c2.name AS foregroundcolor_name,
c2.value AS foregroundcolor_value
from covers
join colors c1 on covers.backgroundcolor_id = c1.id
join colors c2 on covers.foregroundcolor_id = c2.id
答案 1 :(得分:0)
左连接返回连接左侧的所有内容以及找到匹配项的右侧所有内容,如果未找到匹配项,则返回连接的左侧,并从右侧返回null 。