Знатокам. Подскажите, как составить запрос.

Печать RSS
239

В
Автор
Чатланин
0
есть таблицы
users: id (int)
files: id(int), user_id (int)
comments: id(int), file_id (int), user_id(int), text (text)

Зная id юзера, необходимо вывести из базы id файла, к которому нет комментариев, оставленных этим юзером.
Если бы нужно было вывести id файла, к которому юзер оставил комментарии, я бы сделал так:
SELECT files.id 
FORM files,comments 
WHERE comments.user_id='$user_id' AND files.id=comments.file_id
Но мне нужно вывести файл, к которому нет комментариев данного пользователя.

Голубые штаны
0
comments.user_id<>'$user_id'
В
Автор
Чатланин
0
хм.. не подумал. Попробую.
K

Транклюкаторщик
0
2. LondoN_tm, стыдно спрашивать, но что значит <> ?
В
Автор
Чатланин
0
мм.. опять не подумал.. Не выйдет же так.
Будет находить комментарии других пользователей, и выводить этот файл, не смотря на то, что данный пользователь тоже комментировал его.
Ещё варианты?
Изменил: Валерий (04.01.2011 / 10:27)

Голубые штаны
0
4. Ботаник eGo, не равно. Гы.
SELECT files.id  
FROM files,comments  
WHERE comments.user_id <> '$user_id' AND files.id <> comments.file_id
Изменил: Дмитрий (04.01.2011 / 10:34)
В
Автор
Чатланин
0
Да не то это.
О

Землянин
0
Вопрос поставлен не совсем корректно. У тебя есть id пользователя.Тебе необходимо найти все файлы у пользователя с данным id при условии что эти файлы никто не комментировал?
Если все именно так, тогда используй следущий запрос
SELECT 
	files.id FROM files 
JOIN 
	users ON users.id = files.user_id 
LEFT JOIN 
	comments ON comments.user_id = users.id 
WHERE 
	users.id = 1 AND comments.file_id IS NULLL
Изменил: Олег (04.01.2011 / 19:32)
В
Автор
Чатланин
0
Нет, не так. Нужно было найти все файлы, которые этот пользователь не комментировал.
Я нашёл ответ..
SELECT files.id
FROM files
WHERE
NOT EXISTS (
SELECT id FROM comments WHERE file_id=files.id AND user_id=?
     )
Изменил: Валерий (04.01.2011 / 19:47)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск