Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2015, 08:31   #1
Stockholm
Новичок
Джуниор
 
Регистрация: 05.05.2015
Сообщений: 8
Печаль Помощь в запросе

Доброго времени суток! Вот уже несколько дней сижу и не могу составить один единственный запрос. Прошу у вас помощи.

Есть таблица: использование (ид, ид_агронома, ид_поля, ид_удобрения, количество) use(id, agronomist_id, field_id, fertilizer_id, count).

Собственно таблица показывает какой агроном какое поле каким удобрением и в каком количестве орошал.

А задание такое: выведите поля, которые удобрены всеми удобрениями.
Stockholm вне форума Ответить с цитированием
Старый 05.05.2015, 08:57   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Одно и то же поле могут удобрять дважды или это запрещено?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.05.2015, 09:05   #3
Stockholm
Новичок
Джуниор
 
Регистрация: 05.05.2015
Сообщений: 8
По умолчанию

Да, могут.
Stockholm вне форума Ответить с цитированием
Старый 05.05.2015, 09:19   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так попробуй
Код:
SELECT V.field_id
  FROM (
    SELECT U.field_id,COUNT(*) AS CountFertilizer
      FROM (
        SELECT field_id,fertilizer_id
          FROM use
          GROUP BY field_id,fertilizer_id) U
      GROUP BY U.field_id) V
  WHERE V.CountFertilizer=(SELECT COUNT(*) FROM use GROUP BY fertilizer_id)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.05.2015, 09:35   #5
Stockholm
Новичок
Джуниор
 
Регистрация: 05.05.2015
Сообщений: 8
По умолчанию

SQLSTATE[21000]: Cardinality violation: 7 ОШИБКА: подзапрос в выражении вернул больше одной строки (SQL: SELECT V.field_id FROM ( SELECT U.field_id,COUNT(*) AS CountFertilizer FROM ( SELECT field_id,fertilizer_id FROM use GROUP BY field_id,fertilizer_id) U GROUP BY U.field_id) V WHERE V.CountFertilizer=(SELECT COUNT(*) FROM use GROUP BY fertilizer_id))

=(
Stockholm вне форума Ответить с цитированием
Старый 05.05.2015, 09:39   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ага, там тоже двухэтажный в условии нужно
Код:
WHERE V.CountFertilizer=(SELECT COUNT(*) FROM (SELECT fertilizer_id FROM use GROUP BY fertilizer_id) T)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.05.2015, 09:42   #7
Stockholm
Новичок
Джуниор
 
Регистрация: 05.05.2015
Сообщений: 8
По умолчанию

SQLSTATE[42601]: Syntax error: 7 ОШИБКА: подзапрос во FROM должен иметь псевдоним LINE 6: WHERE V.CountFertilizer=(SELECT COUNT(*) FROM (SELECT fe... ^ HINT: Например, FROM (SELECT ...) [AS] foo. (SQL: SELECT V.field_id FROM ( SELECT U.field_id,COUNT(*) AS CountFertilizer FROM ( SELECT field_id,fertilizer_id FROM use GROUP BY field_id,fertilizer_id) U GROUP BY U.field_id) V WHERE V.CountFertilizer=(SELECT COUNT(*) FROM (SELECT fertilizer_id FROM use GROUP BY fertilizer_id)))

=((
Stockholm вне форума Ответить с цитированием
Старый 05.05.2015, 09:44   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Есть же T, чуть позже подправил
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.05.2015, 09:50   #9
Stockholm
Новичок
Джуниор
 
Регистрация: 05.05.2015
Сообщений: 8
По умолчанию

Прошло без ошибок не к сожалению не выводит результата. возвращает 0 строк.
Stockholm вне форума Ответить с цитированием
Старый 05.05.2015, 09:56   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
к сожалению не выводит результата. возвращает 0 строк.
Это тоже результат - нет ни одного поля удобренного всеми разновидностями удобрений. Не?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в запросе Ardarik БД в Delphi 7 04.03.2013 15:05
if в запросе sql serres PHP 2 28.05.2010 12:32
Очень нужна помощь с написанием программы... срочно(буду благодарен за помощь) 5Paladin5 Помощь студентам 3 02.07.2009 09:12
Like в запросе АлёнаP Microsoft Office Access 14 13.04.2009 21:35
MySQL-нужна помощь в запросе Stema SQL, базы данных 9 18.10.2008 19:51