2015-01-11 2 views
1

Я пишу SQL-запрос, который возвращает имя самого продукта, который используется больше всего.Однострочный подзапрос возвращает более одной строки - SQL Query

Когда я запустил его, я получаю Подкатегория с одной строкой возвращает более одной строки ошибки, и теперь я знаю, как ее исправить.

Это мой запрос.

CREATE OR REPLACE VIEW mostUsed AS 
SELECT a.article_name, SUM(p.quantity) AS numberOfItems 
FROM ARTICLE a, ITEM p 
WHERE p.fk_id_article = a.id_article 
GROUP BY a.article_name 
HAVING SUM(p.quantity) >= (SELECT MAX(p.quantity) FROM ITEM); 

SELECT ARTICLE_NAME, numberOfItems 
FROM mostUsed 
WHERE numberOfItems = (SELECT MAX(numberOfItems) FROM mostUsed); 

Любая помощь по фиксации оценивается. Спасибо!

+1

могли бы вы изменить '(SELECT MAX (p.quantity) FROM ITEM)', что вместо 'p.quantity' просто используйте 'количество' без' p'? –

+0

@GabrielAmram, конечно же, любительская ошибка. Теперь он отлично работает. Спасибо! – aiden87

ответ

2

Проблема заключается в том, что колонку outerquery можно передать внутри subquery.

(SELECT MAX(p.quantity) FROM ITEM) 

Поскольку вы использовали p.quantity значения извлекается из внешней таблицы ITEM p вместо Item таблицы в subquery и внешней Item таблицы сгруппирована по a.article_name поэтому он возвращается более одной строки.

так удалить псевдоним P из subquery ваша проблема будет фиксированной

SELECT a.article_name, SUM(p.quantity) AS numberOfItems 
FROM ARTICLE a, ITEM p 
WHERE p.fk_id_article = a.id_article 
GROUP BY a.article_name 
HAVING SUM(p.quantity) >= (SELECT MAX(quantity) FROM ITEM) 
+0

спасибо, он отлично работает :) – aiden87