2014-01-16 16 views
0

对不起,我不知道如何将标题放入单词中。以下是我的代码。在SQL查询中,如果条件存在,请在其他任何情况下选择该条件

SELECT DISTINCT association.NamaBadan, 
    (
     CASE 
      WHEN type = 5 
       THEN 'Batal' 
      WHEN NamaBadan LIKE '%BATAL%' 
       THEN 'Batal' 
      ELSE 'Sah' 
      END 
     ) AS STATUS 
FROM association 
LEFT JOIN tindakan 
    ON association.assoc_id = tindakan.assoc_id 

它返回如下表所示:

query result

正如你可以看到有重复的'perseketuan草地滚球马来西亚和不同的结果对下一列结果,其中一些草坪碗是'sah',有些是'batal'。

这是由于表tindakan中有多个条目。类型不是5的参赛作品。例如,在表达tindakan的草坪碗上有两个参赛作品。一个与类型5,另一个与类型4.

由于我的查询陈述类型5 = Batal和其他= Sah,查询输出草地碗的状态。

我该如何选择'saal'上的'batal'。

喜欢的东西

IF条件类型= 5存在,则选择这种条件。

回答

0

通过下面的查询

SELECT DISTINCT association.NamaBadan, 
    (
     CASE 
      WHEN type = 5 
       THEN 'Batal' 
      WHEN NamaBadan LIKE '%BATAL%' 
       THEN 'Batal' 
      ELSE 'Sah' 
      END 
     ) AS STATUS 
FROM association 
LEFT JOIN tindakan 
    ON (association.assoc_id = tindakan.assoc_id AND tindakan.type = 5) 
+0

这不会优先考虑'Batal',除非'Batal'不会输出任何状态字段中的任何内容当他的类型是5。 – Kickstart

0

您可以尝试使用Group by子句或order by子句为您排序结果。

,那么你可以试试这个:

SELECT association.NamaBadan, 
    (
     CASE 
      WHEN type = 5 
       THEN 'Batal' 
      WHEN NamaBadan LIKE '%BATAL%' 
       THEN 'Batal' 
      ELSE 'Sah' 
      END 
     ) AS STATUS 
FROM association 
WHERE STATUS LIKE '%Batal%' 
LEFT JOIN tindakan 
    ON association.assoc_id = tindakan.assoc_id 

希望它能帮助。

+0

这不是分组或排序,我想解决它。我希望它只显示其中一个状态。比如在表协会草坪状态为lulus,因为它的名字中没有%BATAL%。只是草坪碗。但是,草坪碗也存在于桌上的tindakan,在那里它的地位是Batal。我如何让查询选择Batal over Sah。 – mfmz

0

可能只是在状态使用GROUP BY与MIN: -

SELECT association.NamaBadan, 
    MIN(
     CASE 
      WHEN type = 5 
       THEN 'Batal' 
      WHEN NamaBadan LIKE '%BATAL%' 
       THEN 'Batal' 
      ELSE 'Sah' 
      END 
     ) AS STATUS 
FROM association 
LEFT JOIN tindakan 
    ON association.assoc_id = tindakan.assoc_id 
GROUP BY association.NamaBadan 
+0

我想你错了我的问题。我编辑了这个问题,以澄清我的问题。基本上两个表中都有两个类似的条目。但一个与状态= sah另一个是= batal。我如何使查询选择sah的战斗。 – mfmz

+0

这就是这个查询正在做的事情。它正在挑选a​​ssociation.NamaBadan和状态的最小值(即Batal小于Sah) – Kickstart

相关问题