Forum Webscript.Ru
Общие => Базы данных => Тема начата: 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 две связи проектов и заказчиков
-
Поля напиши какие есть у таблиц с кратким описанием. Ok?
-
Ну самое главное поле в таблицах их ид-шники в таблице пересечений указывается что с чем пересекается
могу тебе дамп базы кинуть :)
-
Ну можешь кинуть, если на словах объяснить не можешь.
-
Дамп есть по адресу http://perec.km.ru/ALIEN.TXT
-
select id from projects as a LEFT JOIN peresech as b ON a.id = b.id_chego where b.id_chego is NULL
Пиво приветствуется.:)
-
Пива не будет, извини но спасибо скажу :)
Даже большое спасибо :)
-
Кстати объясни почему мой код неправильный?
-
:)) Классическое объедине таблиц в SQL - matched records, т.е. должно быть соответствие записей одного файла записям другого
(ты пишешь peresech.id_chego=projects.id, соответственно записи будут выбираться по этому критерию).
LEFT JOIN - это "matched with primary file", т.е. если во втором файле не нашлось записи соответствующей условиям объединения то ее поля проставляются пустыми (дефолтными).
Вообще в стандартном SQL твой запрос решается вложенным select. но его к сожалению mysql пока не поддерживает (4-ую версию пока не рассматриваем).
-
Спасибо большое :)