FULL OUTER JOIN - mysql

时间:2013-11-30 10:33:47

标签: mysql

我有两个表,第一个表称为“提交”,第二个表称为“区域”

********  SUBMISSIONS TABLE  ********
userid  statusid  no      name    area    month    year    dateupdated
62      2         763     ABCD    Brazil      6    2013    2013-11-26 15:28
62      1         869     ABC     Brazil      7    2012    2013-11-26 15:10
62      2         869     ABC     Brazil      6    2013    2013-11-26 15:28
62      1         869     ABC     Brazil      6    2013    2013-11-26 14:50
61      1         763     ABCD    Brazil      6    2013    2013-11-26 14:50
54      1         200     ABCDE   US         12    2013    2013-11-26 21:02
32      2         200     ABCDE   US         12    2013    2013-11-26 21:03
******* AREA TABLE ********
  no      name    area     
  763     ABCD    Brazil  
  869     ABC     Brazil  
  869     ABC     Brazil  
  869     ABC     Brazil  
  763     ABCD    Brazil  
  200     ABCDE   US      
  200     ABCDE   US   

我的过程:

  • 用户选择状态
  • 用户选择月份
  • 用户选择年份
  • 所有通过下拉菜单(SELECT)

一旦他们选择了3个字段,就会显示过滤后的数据。

我想要实现的目标:

我希望记录按照上面的SELECTS显示(此时此功能正常) 我还想显示“区域”表中的所有记录以及“提交”表中没有数据的位置。我想要的输出的一个例子如下:

userid  statusid  no      name    area    month    year    dateupdated
62      2         763     ABCD    Brazil      6    2013    2013-11-26 15:28
62      1         869     ABC     Brazil      7    2012    2013-11-26 15:10
62      2         869     ABC     Brazil      6    2013    2013-11-26 15:28
62      1         869     ABC     Brazil      
                  763     ABCD    Brazil      
                  200     ABCDE   US        
                  200     ABCDE   US       

在摘要中,我需要将所选记录显示为SELECTS,但还需要显示区域表中的所有记录。

1 个答案:

答案 0 :(得分:0)

您可以在此处使用左外连接。基本上,您希望从区域表中选择所有记录,并从提交表中选择匹配的行。

查询看起来像 -

select sb.userid, sb.statusid, a.no, 
       a.name, sb.area, sb.month, 
       sb.year, sb.dateupdates 
  from area a left outer join submission sb
    on (a.no = sb.no)