Получение только изображения по умолчанию для свойства - PullRequest
0 голосов
/ 22 августа 2010

Я пытаюсь получить список свойств, и для этого мне нужно связать вместе 4 таблицы.Таблицы: property, property_type, state и photo.

Проблема в получении ТОЛЬКО изображения по умолчанию для свойства.Фотография с самым низким номером должна быть по умолчанию.Таким образом, если для свойства 10 есть 2 фотографии, в этом наборе результатов должна быть та, которая имеет более низкое значение ранга.

Взгляните на то, что у меня есть, это должно объяснить, что я уже сделал,По сути, он показывает список свойств, включая идентификатор фотографии, назначенный этому свойству.К сожалению, поскольку я использую GROUP BY, чтобы исключить дополнительные результаты (не нужно 5 строк для одного свойства, если для него назначено 5 фотографий), упорядочение по рангу фотографий не меняет мои результаты, как я думал.1007 * Кто-нибудь может указать мне правильное направление?Стоит отметить, что я вхожу в этот проект, который уже завершен.Таким образом, структура базы данных не может быть изменена на этом этапе.

1 Ответ

2 голосов
/ 22 августа 2010

Использование:

  SELECT p.property_id,
         p.property_name,
         s.state_id,
         s.state_name,
         x.photo_id,
         x.rank
    FROM PROPERTY p
    JOIN PHOTO x ON x.property_id = p.property_id
    JOIN (SELECT ph.property_id,
                 MIN(ph.rank) AS min_rank
            FROM PHOTO ph
        GROUP BY ph.property_id) y ON y.property_id = x.property_id
                                  AND y.min_rank = x.rank
    JOIN PROPERTY_TYPE pt ON pt.property_type_id = p.property_type_id
    JOIN STATE s ON s.state_id = p.state_id   
GROUP BY p.property_id
ORDER BY s.state_name, p.property_name

Я изменил ваш запрос, чтобы выполнить самостоятельное объединение с копией таблицы PHOTO, чтобы получить минимальный ранг для значения property_id.Присоединившись к таблице PHOTO, я могу гарантировать, что будет возвращена только запись PHOTO с самым низким рейтингом.

...