1 / 1 / 1
Регистрация: 06.03.2015
Сообщений: 87
|
||||||
1 | ||||||
Как написать SQL запрос06.03.2015, 12:03. Показов 2228. Ответов 4
Метки нет (Все метки)
Здравствуйте, решаю такую задачу по SQL.
У меня в базе есть таблицы: поставки SPJ (num_post,num_detal,num_izdel,kolvo), детали P (num_detal,name,color,massa,town), изделия J(num_izdel,name_izdel,town), поставщики S(num_postб,surname,rejting,gorod). Задание такое: Выбрать все пары поставщиков, поставляющие одинаковые детали для одного и того же изделия. Вывести номер изделия, номер детали, номер поставщика1, общий объем поставки данной детали для данного изделия поставщика1, номер поставщика2, общий объем поставки данной детали для данного изделия поставщика2, город изделия, город детали, город поставщика1 , город поставщика2. Так как в задании просят выбрать разных поставщиков, то значит надо работать с таблицой поставки SPJ, поэтому я ввожу два псевдонима p1 и p2 для различения поставщиков. Во вложенных запросах я пытаюсь генерировать наборы деталей для заданного поставщика и заданного изделия и хочу их сравнить. Но вот тут возникли проблемы, SQL не дает сравнивать вложенные запросы, которые имеют не сколько ответов. Вот допустим первый вложенный запрос вернул {P1,P3} и второй тоже самое, а как их сравнить на совпадение ? Я решил взять разность множеств, если они равны, то результат будет Null, но такой запрос не выдает никакие ответы, но и ошибок на компиляции нет. Подскажите, пожалуйста, где ошибка тут у меня. У меня в таблицы поставки есть строки: номер поставщика, номер детали номер, изделия количество S2 J1 P3 S3 J1 P3 То есть запрос должен выдавать эту пару поставщиков, так как они для одной детали поставляют одни и те же изделия, но не выдает, помогите найти ошибку.
0
|
06.03.2015, 12:03 | |
Ответы с готовыми решениями:
4
Как написать запрос SQL? Как написать SQL запрос Как можно написать запрос В SQL Как написать запрос, чтобы рассчитать количество групп sql? |
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,271
|
|
06.03.2015, 14:03 | 2 |
Они должны совпасть как по количеству строк, так и по значениям соответствующих полей?
Эта операция называется "реляционное деление", есть смысл погуглить и изучить. Скорее всего лучший выбор - предикаты EXISTS()/NOT EXISTS()
0
|
1 / 1 / 1
Регистрация: 06.03.2015
Сообщений: 87
|
|
06.03.2015, 14:11 [ТС] | 3 |
Да, то есть ответы {P1,P2,P3} и {P3,P1,P2} считаются одинаковыми.
Добавлено через 3 минуты Я и использую not exists(), я беру разность этих результатов, если они результат ведь null, поэтому использую not exists, но не получаю ответ.
0
|
3548 / 2122 / 752
Регистрация: 02.06.2013
Сообщений: 5,150
|
|
06.03.2015, 14:59 | 4 |
0
|
1 / 1 / 1
Регистрация: 06.03.2015
Сообщений: 87
|
|
06.03.2015, 15:18 [ТС] | 5 |
Я пытаюсь брать разность этих двух множеств строк, если они равны по значениям элементов, то ведь получается пустое множество null, которое я и хочу проверить командой not exists(). Но почему-то не получается так.
0
|
06.03.2015, 15:18 | |
06.03.2015, 15:18 | |
Помогаю со студенческими работами здесь
5
Написать SQL запрос Помогите написать SQL-Запрос Не получается написать SQL запрос на выборку с вычислением написать запрос в sql managment studio, выборки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |