Mysql SQL从2个有限制的表中选择
基本上,我有两张桌子:管理和图片。 我需要一个包含管理表中所有属性的列表。如果存在图片,列表只需显示第一张图片(seq=1) 我的问题是:列表没有显示没有图片的属性。我如何解决这个问题 我有以下表格: 特伯尔曼Mysql SQL从2个有限制的表中选择,mysql,sql,select,join,left-join,Mysql,Sql,Select,Join,Left Join,基本上,我有两张桌子:管理和图片。 我需要一个包含管理表中所有属性的列表。如果存在图片,列表只需显示第一张图片(seq=1) 我的问题是:列表没有显示没有图片的属性。我如何解决这个问题 我有以下表格: 特伯尔曼 propid | city | lang | ... 1 Mol NL 2 Olen NL 3 Geel NL 4 Ham FR tblPic
propid | city | lang | ...
1 Mol NL
2 Olen NL
3 Geel NL
4 Ham FR
tblPic
propid | lang | seq | filename
1 NL 1 file11
1 FR 1 file12
1 NL 2 file13
1 FR 2 file14
1 NL 3 file15
1 FR 3 file16
3 NL 22 file17
3 FR 22 file18
3 NL 23 file19
3 FR 23 file20
3 NL 24 file21
3 FR 24 file22
SELECT m.propid, m.city, p.filename
FROM tblMan as m
INNER JOIN tblProp as p ON m.propid = p.propid
WHERE m.lang = 'NL' AND p.lang = 'NL' AND p.picture_index = '1'
结果是:
propid | city | filename
1 Mol file11
3 Geel file17
他没有得到propid 2(Olen),因为没有图像
我想要结果:
propid | city | filename
1 Mol file11
2 Olen (Null or 0 or...)
3 Geel file17
我试过子查询,联合,concat。。。没有结果
有人知道我应该使用哪种SQL语句吗
谢谢你的帮助 使用
LEFT JOIN
,因为您希望在表tblMan
上显示与您在WHERE
子句上的条件相匹配的任何记录,并在on
子句上为表tblProp
移动一些过滤条件
SELECT m.propid,
m.city,
p.filename
FROM tblMan as m
LEFT JOIN tblProp as p
ON m.propid = p.propid
AND p.lang = 'NL'
AND p.picture_index = '1'
WHERE m.lang = 'NL'
试试这个:
SELECT m.propid,
m.city,
p.filename
FROM tblman AS m
LEFT JOIN tblprop AS p
ON m.propid = p.propid
AND p.lang = 'NL'
AND p.picture_index = '1'
WHERE m.lang = 'NL'
您需要使用
左侧外部联接
代替内部联接
这非常有效。我的下一个问题是:有些图片的序列(图片索引)是从22或32开始的。。。而不是1。当我使用min()时,我得到“组函数的使用无效”。谢谢你能用图片索引更新这个演示,这样我就可以更新答案了吗?