powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка записей из двух таблиц, для которых отсутствуют связующие записи в 3й таблице
3 сообщений из 3, страница 1 из 1
Выборка записей из двух таблиц, для которых отсутствуют связующие записи в 3й таблице
    #38354629
Schmidt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,

В БД сайта есть список зарегистрированных пользователей и таблица с наименованиями муз.композиций. Пользователь может выставлять рейтинги к каждой композиции, информация об этом хранится в промежуточной таблице с тремя столбцами: ID пользователя, ID композиции и значение рейтинга. Хочется иметь возможность выбирать список композиций для пользователя, которые он еще не оценивал причем выбирать эти данные нужно для всех пользователей сразу. То есть в терминах БД я хочу выбрать пары "USER_ID, SONG_ID", которые отсутствуют в таблице рейтингов. Не могу корректно описать это на SQL, помогите кто чем может :) Логика моя примерно такая:

Код: sql
1.
2.
SELECT users.name, music.title FROM users,music  -- Декартово произведение, все возможные пары
WHERE (users.id, music.id) NOT IN ratings            -- Фильтр по отсутствующим записям



Помогите, пожалуйста, довести запрос до рабочего состояния
...
Рейтинг: 0 / 0
Выборка записей из двух таблиц, для которых отсутствуют связующие записи в 3й таблице
    #38354646
javajdb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SchmidtДобрый день,

В БД сайта есть список зарегистрированных пользователей и таблица с наименованиями муз.композиций. Пользователь может выставлять рейтинги к каждой композиции, информация об этом хранится в промежуточной таблице с тремя столбцами: ID пользователя, ID композиции и значение рейтинга. Хочется иметь возможность выбирать список композиций для пользователя, которые он еще не оценивал причем выбирать эти данные нужно для всех пользователей сразу. То есть в терминах БД я хочу выбрать пары "USER_ID, SONG_ID", которые отсутствуют в таблице рейтингов. Не могу корректно описать это на SQL, помогите кто чем может :) Логика моя примерно такая:

Код: sql
1.
2.
SELECT users.name, music.title FROM users,music  -- Декартово произведение, все возможные пары
WHERE (users.id, music.id) NOT IN ratings            -- Фильтр по отсутствующим записям



Помогите, пожалуйста, довести запрос до рабочего состояния

примерно так

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT u.name, m.title 
FROM users u ,music m 
WHERE NOT EXISTS
(select 1 
from ratings r 
where r.music_id = m.id
and r.user_id = u.id)
...
Рейтинг: 0 / 0
Выборка записей из двух таблиц, для которых отсутствуют связующие записи в 3й таблице
    #38355160
Schmidt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шикарно...всё работает...) Я даже и не знал, что NOT EXISTS можно использовать в WHERE. Спасибо :) **Ушел искать литературу по продвинутому SQL**
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка записей из двух таблиц, для которых отсутствуют связующие записи в 3й таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]