Выборка знечений из одной таблицы, запись про которые нету в другой.

Krisha

pain in the neck
Выборка знечений из одной таблицы, запись про которые нету в другой.

Имеем 2 таблицы lessons и statistics. Есть запрос, выбирающий LessonNumbers из таблицы lessons, про которые в таблице statistics есть запись и statistics.Passed != 1.
PHP:
SELECT l.LessonNumber
FROM lessons as l, statistics as s
WHERE s.DriverID = '$id' 
AND s.LessonID = l.LessonID 
AND l.ChapterID = '$chid'
AND s.Passed != '1'
ORDER BY l.LessonNumber
Необходимо сделать выборку еще и тех lessons.LessonNumber, про которые вообще нету записи в таблице statistics.

Если кто понял, помогите :)
 

Falc

Новичок
Krisha
Страно этот вопрос слышать от тебя, подобные вопросы задают тут с частотой раз в неделю :)
 

Krisha

pain in the neck
Не выходит каменный цветок:
PHP:
SELECT
   lessons.LessonNumber
FROM
   lessons
LEFT JOIN
   statistics ON lessons.LessonID = statistics.LessonID
WHERE 
   statistics.DriverID = '6010' AND lessons.ChapterID = '5' AND (statistics.Passed != '1' OR statistics.LessonID IS NULL) 
ORDER BY
   lessons.LessonNumber
Всё равно выбирает только тех, которые Passed != '1'

-~{}~ 06.04.04 18:33:

Falc
А шо поделать, када не получается...
 

Falc

Новичок
Krisha
SELECT
lessons.LessonNumber
FROM
lessons
LEFT JOIN
statistics ON lessons.LessonID = statistics.LessonID AND statistics.DriverID = '6010'
WHERE
lessons.ChapterID = '5' AND (statistics.Passed != '1' OR statistics.LessonID IS NULL)
ORDER BY
lessons.LessonNumber
 

Krisha

pain in the neck
Falc
Сенкс, сработало. Не мог бы ты пояснить в чем тут прикол ?
 

Nime

Guest
Потому как ты когда ты добавляешь это условие в WHERE ты отсекаешь те записи, которые не имеют строки в statistics :)

По идее, так тоже должно сработать.

SELECT
lessons.LessonNumber
FROM
lessons
LEFT JOIN
statistics ON lessons.LessonID = statistics.LessonID
WHERE
(statistics.DriverID = '6010'
AND lessons.ChapterID = '5' AND statistics.Passed != '1') OR statistics.LessonID IS NULL
ORDER BY
lessons.LessonNumber
 

Falc

Новичок
Krisha
Кстати запрос Найма и мой запрос выдадут разные резултаты.

Если тебе надо выбрать записи которых вообще нету записи в таблице statistics. Тогда тебе нужен запрос Nime (правда он помойму немного не верный).

Если же только те записи в которых нету записи в таблице statistics при statistics.DriverID = '6010', то мой запрос.
 

Krisha

pain in the neck
Nime
Сенкс, но это немного не то.

Falc
Да, именно так, всё работает, всем спасибо :)
 

Nime

Guest
Он просто попадал под определение в первом посте ;)

Сейчас понятно :)
 

dnes

Новичок
Непонятно, но здорово!

У меня висит подобная проблема. Правда, тут например знаю. что если во второй таблице id конкретного продукта (produkt_id) есть, то в первой базовой, его статус никак не может быть 0. Поэтому я строю простой и вроде бы логичный запрос:

PHP:
SELECT produkty.id, netu.produkt_id FROM produkty, netu WHERE produkty.status = '0' OR netu.data = $data
И хоть я знаю, что выписаться есть чему, ничего не выписывается и при этом об ошибках не сообщается. И что же, это мне значит тоже нужно с JOIN колдовать. Или я где-то просто напутал.
 

Falc

Новичок
dnes
Сначала тебе надо научится создавать свою тему, и грамотно формулировать вопрос :)
 

dnes

Новичок
Originally posted by Falc
dnes
Сначала тебе надо научится создавать свою тему, и грамотно формулировать вопрос :)
Спасибо! Я просто было подумал, что здесь новая тема никчему. Речь-то шла о чем-то очень похожем. И кстати сами писали, что "подобные вопросы задают тут с частотой раз в неделю".

А все-таки, значит, и запрос мой неграмотный?:(
 

Falc

Новичок
dnes
Ты влез в чужую тему. задав обсаютно не понятный вопрос.

Попробуй сам прочитать свое предложения и понять его:
"Правда, тут например знаю. что если во второй таблице id конкретного продукта (produkt_id) есть, то в первой базовой, его статус никак не может быть 0."

Так что соизволь создать свою тему и аккуратно описать свою проблему.
 
Сверху