MySQL Query Nightmare с данными RET - PullRequest
0 голосов
/ 09 марта 2010

Для тех из вас, кто действительно имеет дело с RETS, возможно, сможете помочь мне здесь.Проблема возникает, когда несколько свойств привязаны к данным RETS, даже если свойство продано.По сути, мне нужно проверить базу данных с помощью оператора SELECT по трем полям.Рассматриваемые поля будут C_StreetName, C_StreetNumber и C_PostalCode.

Чтобы пояснить, что я хочу, это какой-то способ проверки на наличие дубликатов при сборе набора данных, это не может быть сделано в php из-за того, как данные возвращаются через приложение.Поэтому, если он найдет другую запись с тем же C_StreetName, C_StreetNumber и C_PostalCode, он удалит их из набора данных.В идеале было бы неплохо, если бы он мог также проверить статус двух, чтобы выяснить, истек ли один или продан, прежде чем удалять их из данных.

Я не знаком со сложными функциями SQL, я искалв операторе IF, пока я не обнаружил, что его можно использовать только при хранении данных, а не наоборот.И заявление CASE, но, похоже, это не сработает.

Если у вас есть какие-либо предложения по поводу того, что мне следует использовать, я был бы признателен.Надеюсь, что есть способ сделать это, и имейте в виду, что это только одна таблица, к которой я получаю доступ. У меня нет соединений.

Заранее спасибо.

1 Ответ

0 голосов
/ 09 марта 2010

Вот кое-что, чтобы вы пошли в правильном направлении. Я не проверял это, и я не уверен, что вы можете вкладывать выражение case в max () в mysql.

Для этого необходимо вывести по одной строке для каждой уникальной комбинации названия улицы, номера и почтового индекса со статусом «Просрочено» или «Продано», имеющим приоритет над другими значениями. То есть, если есть строка с «Истекшим сроком», она будет выведена в предпочтение перед не просроченным и не проданным, а строка с «Проданным» будет выведена, если она существует, независимо от того, какие другие строки существуют для этого свойства. Оператор 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...