Forum Webscript.Ru

Общие => Базы данных => Тема начата: AlieN от 04 Февраля 2002, 22:07:52

Название: ХЕЛП ЛЮДИ!
Отправлено: AlieN от 04 Февраля 2002, 22:07:52
Существует три таблицы - таблица проектов,таблица заказчиков, таблица пересечений

Все связи между заказчиками и проектами лежит в таблице пересечений

Вот как найти все проекты к которым не присовоены закачики???
попробовал вот так select projects.name,projects.id from projects,peresech where peresech.id not exist and peresech.id_chego=projects.id - не получается хотся в таблицу проектов - 4 проекта а в таблице пересечений - 2 две связи проектов и заказчиков
Название: ХЕЛП ЛЮДИ!
Отправлено: Chs от 05 Февраля 2002, 10:23:03
Поля напиши какие есть у таблиц с кратким описанием. Ok?
Название: ЭЭЭ
Отправлено: AlieN от 05 Февраля 2002, 12:51:41
Ну самое главное поле в таблицах их ид-шники в таблице пересечений указывается что с чем пересекается
могу тебе дамп базы кинуть :)
Название: ХЕЛП ЛЮДИ!
Отправлено: Chs от 05 Февраля 2002, 13:40:03
Ну можешь кинуть, если на словах объяснить не можешь.
Название: ХЕЛП ЛЮДИ!
Отправлено: AlieN от 05 Февраля 2002, 13:53:24
Дамп есть по адресу http://perec.km.ru/ALIEN.TXT
Название: ХЕЛП ЛЮДИ!
Отправлено: Chs от 05 Февраля 2002, 14:47:26
select id from projects as a LEFT JOIN peresech as b ON  a.id = b.id_chego where b.id_chego is NULL

Пиво приветствуется.:)
Название: ХЕЛП ЛЮДИ!
Отправлено: AlieN от 05 Февраля 2002, 15:35:38
Пива не будет, извини но спасибо скажу :)
Даже большое спасибо :)
Название: ХЕЛП ЛЮДИ!
Отправлено: AlieN от 05 Февраля 2002, 15:47:53
Кстати объясни почему мой код неправильный?
Название: ХЕЛП ЛЮДИ!
Отправлено: Chs от 05 Февраля 2002, 16:26:06
:)) Классическое объедине таблиц в SQL - matched records, т.е. должно быть соответствие записей одного файла записям другого
(ты пишешь peresech.id_chego=projects.id, соответственно записи будут выбираться по этому критерию).
LEFT JOIN - это "matched with primary file", т.е. если во втором файле не нашлось записи соответствующей условиям объединения то ее поля проставляются пустыми (дефолтными).

Вообще в стандартном SQL твой запрос решается вложенным select. но его к сожалению mysql пока не поддерживает (4-ую версию пока не рассматриваем).
Название: ХЕЛП ЛЮДИ!
Отправлено: AlieN от 05 Февраля 2002, 19:31:57
Спасибо большое :)