DISTINCT sql

программирование php MySQL базы данных sql

Здравствуйте!

Нужно вывести все уникальные записи, у которых поле:
`rw_2a` равно 1

если же, есть записи у которых поле:
`rw_2a` равно 0

и при этом оно уникальное, то его выводить обязательно.

Но чтоб при этом сохранялась последовательность при выводе
order by `table_1`.`rw_1d` desc

Делаю примерно так:

SELECT DISTINCT
`table_1`.`rw_1a`,
`table_1`.`rw_1b`,
`table_2`.`rw_2a`
FROM
`table_1`
JOIN
`table_2`
ON
`table_1`.`rw_1c` = `table_2`.`rw_2c`
ORDER BY
`table_1`.`rw_1d` = :rw_1d
DESC;");

Но у меня выводятся все записи. В чем моя ошибка? Почему не выводятся уникальные записи?

Спасибо!

Примечание:
`table_1`.`rw_1a` | `table_1`.`rw_1b` | `table_2`.`rw_2a`
_____ aa1 _____ | ______ 0 _____ | ______ 1 _______
_____ aa2 _____ | ______ 0 _____ | ______ 1 _______
_____ aa2 _____ | ______ 0 _____ | ______ 0 _______
_____ aa3 _____ | ______ 0 _____ | ______ 0 _______

Вот обратите внимание на (две записи с одинаковыми значениями):
`table_1`.`rw_1a` = 'aa2'

Если есть запись у которой:
`table_2`.`rw_2a` = 1
`table_2`.`rw_2a` = 0

то выводить ту запись, у которой стоит 1
если же есть запись, у которой:
`table_2`.`rw_2a` = 0

и она единственная, то ее выводить.

Вот так примерно так должно работать.

Примечание:
решил проблему следующим образом:
1) разделил запрос на 2 запроса
2) добавил к обоим запросам group by

и саму логику движка пришлось переписать ..

P.S. Тема еще актуальна. Хочу понять, как можно это замутить в едином запросе.

Примечание:
Анатолий Широков, спасибо большое! То что надо!
Ответы:
Итак, у тебя должно выйти  в результате


10 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.