2017-02-20 4 views
0

Вот сценарий и вопрос:Ошибки Использование псевдонима в подзапросе для получения результатов

Маркуса также путешествует на международном уровне, и он заинтересован в рассмотрении некоторых продуктов для покупки. Поскольку его работодатель отправляет его в различные места по всему миру с небольшим уведомлением, он только хочет рассмотреть продукт, если он доступен во всех магазинах, и не заинтересован в продуктах, которые доступны в некоторых, но не во всех магазинах. Таким образом, если он решит приобрести продукт, у него есть уверенность, что его можно купить в любом из мест. Наконец, он заинтересован в просмотре параметров выбора для каждого продукта, который соответствует его критериям.

Я использовал подзапрос в предложении WHERE и получил вывод, отображающий только 2 продукта (во всех местах хранения) с соответствующими вариантами размера:

SELECT Sizes.size_option,Product.product_name 
FROM Sizes 
JOIN Available_in ON Available_in.sizes_id = Sizes.sizes_id 
JOIN Product ON Product.product_id = Available_in.product_id 
WHERE Product.product_id IN 
     (SELECT Product.product_id 
     FROM Product 
     JOIN SELLS ON Sells.product_id = Product.product_id 
     GROUP BY Product.product_id 
     HAVING COUNT(Sells.store_location_id) = 5); 

на следующий вопрос, я должен переставить подзапрос с использованием псевдонима и добавьте подзапрос ЕКА и это то, что я сделал:

SELECT SO.size_option,Product.product_name 
FROM (SELECT Product.product_id 
     FROM Product 
     JOIN SELLS ON Sells.product_id = Product.product_id 
     GROUP BY Product.product_id 
     HAVING COUNT(Sells.store_location_id) = 5)SO 
JOIN Available_in ON Available_in.sizes_id = SO.sizes_id 
JOIN Product ON Product.product_id = Available_in.product_id; 

я переименовал таблицу размеров, поэтому для псевдонима. Im получает ошибку, что SO.sizes_id является недопустимым идентификатором. Это сработало, когда я использовал его в предложении Where, но не работал с предложением FROM. Поблагодарили бы за помощь в том, как это исправить!

Я использую Oracle SQL Developer для написания своих запросов.

ответ

1

Вы не size_id выбрать в подвыборки, так что вы не можете использовать для присоединиться

SELECT SO.size_option, Product.product_name 
    FROM (SELECT Product.product_id, ????? size_id ????? <<<<<<<<<<<<<<< 
     FROM Product 
     JOIN SELLS ON Sells.product_id = Product.product_id 
     GROUP BY Product.product_id 
     HAVING COUNT(Sells.store_location_id) = 5) SO 
    JOIN Available_in ON Available_in.sizes_id = SO.sizes_id 
    JOIN Product ON Product.product_id = Available_in.product_id; 

В присоединиться к SO можно использовать только столбец, выбранный в подзапрос, который генерируется из() SO таблицу

и как предложено JuanCarlosOropeze вы не size_option слишком

+0

Там разве 'SO.size_option' ни –

+0

@JuanCarlosOropeza .correct ... ответ обновляется не йота ваше предложение слишком ..many спасибо – scaisEdge

+0

так ур говорю, что нужно ???. size_id a nd ???. size_option в моем подзаголовке? – Maha

Смежные вопросы