Выборка уникальных строк в LEFT OUTER JOIN
Доброе утро!
Имеется SQL запрос:
SELECT `rel`.id AS `id`, CASE
WHEN meta.meta_name = 'free'
THEN 'Свободен'
WHEN meta.meta_name = 'reserved'
THEN 'Резерв'
WHEN meta.meta_name = 'order' AND meta.meta_data>100
THEN 'Куплен'
WHEN meta.meta_name = 'order' AND meta.meta_data<100
THEN 'Свободен'
WHEN meta.meta_name = 'pre-order'
THEN 'Куплен'
ELSE 'На проверке'
END status
FROM `rel`
LEFT OUTER JOIN `rel_meta` `meta` ON
((`rel`.id = meta.rel_id AND
(
meta.meta_name = 'order' OR
meta.meta_name = 'pre-order' OR
meta.meta_name = 'free' OR
meta.meta_name = 'reserved'
)) OR meta.id = NULL)
LIMIT 20
Цель выполнения запроса: Получение записей из таблицы rel, колонка id + колонка status. Проблема: при выполнении в meta может храниться 2 записи order и pre-order, которые привязаны к одному rel_id, из-за чего в результате строки удваиваются.
Как решить проблему? Что-то подсказывает, копать в сторону DISTINCT, но не смог понять, где именно он уместен.
Заранее благодарен.
Источник: Stack Overflow на русском