2015-08-24 3 views
1

Надеюсь, я могу объяснить это четко, но примерно два дня я пытаюсь выбрать данные из одной таблицы, которая не существует в другой таблице.MySQL Join; Запросить только таблицы несоответствующих таблиц

Итак, в основном, я хочу выбрать из списка треков, которые еще не прослушивались.

SELECT * 
FROM tracks JOIN listens 
ON listens.user_id = tracks.user_id 
WHERE listens.user_id != 9; 

PS: Я пробовал много решений, включая союзы и подзапросы. Это то, где я добрался, прежде чем отказаться от выяснения себя.

Мои настройки таблицы:

[дорожки] ID | user_id

[СЛУШАЕТ] ID | track_id | user_id

Я хочу только треки, которые не были услышаны, и, по какой-то причине я не могу этого добиться. Он просто возвращает все треки или даже иногда отключает треки, которые еще не прослушивались.

Любые точки на правильном подходе? Было бы очень благодарно! Спасибо большое: D

ответ

1

Чтобы найти треки, которые пользователь 9 не перечислила, вот один метод:

SELECT t.* 
FROM tracks t left join 
    listens l 
    on l.track_id = t.id AND l.user_id = 9 
WHERE l.user_id is null; 
+0

работает как шарм !!^_^ Мне кажется, что такая простая ошибка sql дала мне дни головокружения. Тем не менее, я ценю помощь :) – user2292759