数据库
首页 > 数据库> > mysql-从2个表中选择SQL有限制

mysql-从2个表中选择SQL有限制

作者:互联网

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

我的问题:列表不显示没有图片的属性.我该如何解决?

我有以下表格:

propid | city | lang | ...   
  1      Mol     NL        
  2      Olen    NL        
  3      Geel    NL       
  4      Ham     FR    

技术

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(奥伦),因为没有图像!

我想要结果:

propid | city | filename   
  1      Mol     file11
  2      Olen    (Null or 0 or...) 
  3      Geel    file17

我尝试了子查询,联合,合并…(@ _ @),但没有结果.

有人对我应该使用哪种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' 

标签:join,select,left-join,sql,mysql
来源: https://codeday.me/bug/20191122/2059484.html