#sql
#sql
Вопрос:
Я хотел бы написать запрос на соединение sql, который извлекает номер продукта и номера поставщиков всех уникальных пар поставщиков, поставляющих один и тот же продукт, а также цены на их покупку.
Столбцы являются:
ПОСТАВЩИК (SUPNR, SUPNAME, SUPADDRESS, SUPCITY, SUPSTATUS)
ПРОДУКТ (PRODNR, ИМЯ ПРОДУКТА, ТИП ПРОДУКТА, ДОСТУПНОЕ КОЛИЧЕСТВО)
ПОСТАВКИ (SUPNR, PRODNR, ЦЕНА ПОКУПКИ, СРОК ПОСТАВКИ)
ЗАКАЗ НА ПОКУПКУ (PONR, PODATE, SUPNR)
PO_LINE (ПОНР*,* ПРОДНР, КОЛИЧЕСТВО)
ПРИМЕЧАНИЕ: (первичные ключи выделены жирным шрифтом, внешние ключи выделены курсивом жирным шрифтом
мой код таков:
SELECT S1.SUPNR, S2.SUPNR, S2.PRODNR, S2.PURCHASE_PRICE FROM SUPPLIES S1, SUPPLIES S2 WHERE S1.SUPNR gt; S2.SUPNR
Это правильный вопрос?
Комментарии:
1. Если вы хотите написать объединение, напишите ОБЪЕДИНЕНИЕ. Синтаксис TableA, TableB устарел уже более 25 лет назад.
2. Но все же этот синтаксис широко используется в облаке, особенно для хранения данных sqls, например Aws redshift. Это правда, что здесь это не рекомендуется
Ответ №1:
Я думаю, вам просто нужно добавить PRODNR
SELECT S1.SUPNR, S2.SUPNR, S2.PRODNR, S2.PURCHASE_PRICE FROM SUPPLIES S1 join SUPPLIES S2 On S1.SUPNR gt; S2.SUPNR and S1.Prodnr=s2.prodnr
Комментарии:
1. это дает мне ошибку. я добавил отдельный ВЫБОР ОТДЕЛЬНЫХ S1.SUPNR, S2.SUPNR, S2.PRODNR, S2.ЦЕНА ПОКУПКИ ИЗ ПОСТАВОК S1, ПОСТАВОК S2, ГДЕ S1.SUPNR gt; S2.SUPNR
2. В чем ошибка
3. Я исправил ошибку. вы пропустили S2 перед PRODNR. Спасибо