| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > СУБД, общие вопросы > Деление реляций на SQL одним запросом |
| Автор: Wiedzmin 14.10.2006, 18:09 | ||||||
| Есть например таблица a с полем x, таблица b с полем y и связывающая таблица c с полями x и y. Как найти такие x из a, которые в c имеют все соответствия y из b? Двумя запросами можно сделать, например, так: 1. Такие x, пары x и y которых нет в таблице c:
2. Такие x из a, у которых нету недостающих пар (которые записаны в R)
Одним запросом пробовал так (сначала выбираем как в первом из предыдущего, затем правым присоединением фильтруем те, что нужны)
Но не получилось... Вообще что происходит тогда при этом запросе? Просьба вложенными запросами не предлагать ), хочется реализовать джойнами с условиями IS NULL ). |
| Автор: boevik 14.10.2006, 18:22 | ||
| Простой INNER JOIN между тремя таблицами не подойдет? Почучишь все записи у которых есть соотвествие во всех таблицах
|
| Автор: Wiedzmin 14.10.2006, 19:45 |
| Соответствие то есть, но не такое... Например, надо найти таких пользователей, которые постили во всех форумах (т.е. если не нашлось поста хоть в одном форуме такой юзер не катит). Не сделаешь же это просто двумя INNER JOIN... |
| Автор: Wiedzmin 16.10.2006, 13:30 |
| ZeeLax, самую простую структуру здесь написал (таблицы a, b, c), тот запрос про форумы это для примера, чтобы яснее общая задача была |
| Автор: Shiny 16.10.2006, 14:27 | ||
|
| Автор: Wiedzmin 16.10.2006, 16:13 |
| Shiny, например a такая: х 1 2 b: y 3 4 c x y 1 3 1 4 2 4 С запросом который мы ищем должен быть рядок со значением "1" (2 здесь не подходит, так как в таблице с нету строки x=2,y=3). А запрос указаный тобой выводит x y 1 3 1 4 1 NULL 2 NULL 2 NULL 2 4 |
| Автор: Shiny 16.10.2006, 17:56 |
| А ты проверил??? Я уже сама усомнилась, специально новую базу создала, проверила - мой запрос работает абсолютно правильно Мои результаты: x y 1 3 1 4 2 4 |
| Автор: Wiedzmin 16.10.2006, 18:06 |
| Результат должен быть: x 1 |
| Автор: Shiny 17.10.2006, 10:01 |
| Извини, не поняла задачу - мой провтык. Немножко освобожусь - попробую поиграться с нужным запросом. |