@nezzard

Как сортировать результат по если нашли id в другой таблице?

Добрый день, помогите пожалуйста составить запрос.
Есть таблица users и photos, нужно отсортировать users в порядке если нашли id юзера в photos
Т.е. сначала юзеры с фото а потом без
  • Вопрос задан
  • 40 просмотров
Решения вопроса 1
bingo347
@bingo347
Crazy on performance...
SELECT u.* FROM users u
INNER JOIN photos p ON p.user_id = u.id
UNION
SELECT u.* FROM users u
LEFT JOIN photos p ON p.user_id = u.id
WHERE p.id IS NULL
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
SELECT distinct
    users.descr
FROM users
LEFT JOIN photos ON photos.user_id = users.id
ORDER BY case when photos.user_id is not null then 1 else 0 end desc, users.descr

это заготовка:
отбираем всех юзеров, присоединив (left) фото
порядок сортировки задаем
во-первых по наличию в "правой" таблице == есть фото[графии]
во-вторых - по алфавиту

Домашнее задание* - убрать distinct и сделать группировку по user_id и вывести еще количество фото

_____________
* предполагается, что у юзера может быть больше одного фото... если нет - можно и distinct убрать)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы