2010-03-09 66 views
0

对于那些实际上已经与RETS交流的人,可能可以在这里给我一只手。即使属性已售出,多个属性绑定到RETS数据时也会出现问题。基本上我需要的是能够使用SELECT语句对三个字段检查数据库。有问题的字段是C_StreetName,C_StreetNumber和C_PostalCode。MySQL查询与RETs数据的噩梦

为了清楚说明我想要的是在收集数据集时检查重复数据的某种方式,由于数据是如何通过应用程序返回的,因此无法在php中完成。因此,如果它找到具有相同C_StreetName,C_StreetNumber和C_PostalCode的另一条记录,它将从数据集中删除它们。理想情况下,如果在从数据中删除它们之前,它也可以检查两者的状态以确定其是否已过期或已售出,那将会很好。

我不熟悉复杂的SQL函数,我一直在查看IF语句,直到我发现只能在存储数据时才使用,而不是其他方式。 CASE的声明,但它似乎并不会工作。

如果你们对我应该使用什么有什么建议,我会很感激。希望有一种方法可以做到这一点,并记住,这只是我访问的一张表,我没有任何联接。

在此先感谢。

回答

0

下面是让你朝着正确方向前进的东西。我没有测试过这个,不确定你可以在mysql中的max()中嵌套一个case表达式。

这样做的结果是每个街道名称,号码和邮编的唯一组合输出一行,其状态为“过期”或“销售”优先于其他值。也就是说,如果有一行'Expired',它会优先输出非过期和非卖出,并且如果存在'Sold',则输出'Sold'的行,无论该属性有哪些其他行。 case语句只是将状态代码转换为可订购的东西。

select 
    C_StreetName, 
    C_StreetNumber, 
    C_PostalCode, 
    max(
     case status 
      when 'Expired' then 1 
      when 'Sold' then 2 
      else 0 
     end) as status 
    group by 
     C_StreetName, 
     C_StreetNumber, 
     C_PostalCode;