Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL从2个有限制的表中选择_Mysql_Sql_Select_Join_Left Join - Fatal编程技术网

Mysql SQL从2个有限制的表中选择

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

基本上,我有两张桌子:管理和图片。 我需要一个包含管理表中所有属性的列表。如果存在图片,列表只需显示第一张图片(seq=1)

我的问题是:列表没有显示没有图片的属性。我如何解决这个问题

我有以下表格:

特伯尔曼

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()时,我得到“组函数的使用无效”。谢谢你能用图片索引更新这个演示,这样我就可以更新答案了吗?