Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 18.04.2022
Сообщений: 26

Показать максимум count через exists

18.04.2022, 00:39. Показов 1177. Ответов 13
Метки sql (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно вывести все максимальные значения count(subscriptions.sb_book). Я знаю, что этих значений всего 2, то есть 2 строчки, где qbook = 4. В задании ещё желательно использовать exists. Долго думаю, ничего не понимаю....

SQL
1
2
3
4
5
6
7
SELECT authors.a_name, COUNT(subscriptions.sb_book) AS qbook
FROM books, authors, m2m_books_authors, subscriptions
WHERE books.b_id=m2m_books_authors.b_id
AND m2m_books_authors.a_id=authors.a_id
AND books.b_id=subscriptions.sb_book
GROUP BY authors.a_name
ORDER BY COUNT(sb_book) DESC
на 3 строки с where не обращайте внимание, я там связывал разные таблицы.
Результат, который выводит этот код:
Название: 0a9S43-Zv3az.png
Просмотров: 90

Размер: 3.8 Кб

Нужен такой же вывод, только первые 2 строки. И не через limit !!!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.04.2022, 00:39
Ответы с готовыми решениями:

Найти максимум с count-ом
Подскажите пожалуйста как найти 5-ти периодичный максимум c count - ом попроще чем у меня (в select) сейчас нахожу превышение 5-ти...

Нюансы синтаксиса: statement for - как понимать запись for (count=0, mask=1; count != 16; count++, mask<<= 1)?
Много всяких языков попадалось, относительно много конечно, но такое вижу первый раз, что бы тело FOR имело не 3 оператора - начальный,...

Найти в массиве минимум и максимум и показать элементы между ними
Есть задача для экзамена не могу писать код если не сложно помогите Пример : Массив : 3 4 6 1 2 9 10 14 18 Мин : 1 Макс : 18 ...

13
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
18.04.2022, 09:08
P1R4T, подскажите, а куда Вы там собираетесь применять exists? Вы же прочитали про него? ну тогда предположите. так как из текущего контекста не особо понятно, для чего он нужен
0
0 / 0 / 0
Регистрация: 18.04.2022
Сообщений: 26
18.04.2022, 10:02  [ТС]
Я поэтому и написал *желательно*, тоже не понял куда его можно добавить.
0
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,768
18.04.2022, 10:15
У вас есть запрос, который выдаёт ту табличку, что на приложенном скрине.

Далее:
1. Сделайте копию этого запроса.
2. Оставьте там только колонку 'qbook'.
3. Оформите полученный запрос в виде подзапроса и извлеките оттуда 'max(qbook)'. Итого, у вас получится запрос, который выдаёт ровно одно значение.
4. К изначальному запросу допишите в конце: 'having count(sb_book) = (<полученный запрос, который возвращает max(qbook)>)'.
0
0 / 0 / 0
Регистрация: 18.04.2022
Сообщений: 26
18.04.2022, 11:38  [ТС]
kotelok, Так не работает.

SQL
1
2
3
4
5
6
7
8
SELECT COUNT(subscriptions.sb_book) AS qbook
FROM books, authors, m2m_books_authors, subscriptions
WHERE books.b_id=m2m_books_authors.b_id
AND m2m_books_authors.a_id=authors.a_id
AND books.b_id=subscriptions.sb_book
GROUP BY authors.a_name
ORDER BY COUNT(sb_book) DESC
HAVING COUNT(sb_book) = (SELECT MAX(qbook) FROM subscriptions)
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
18.04.2022, 11:46
P1R4T,
Цитата Сообщение от P1R4T Посмотреть сообщение
Так не работает.
конечно, такое не будет работать. у Вас же в таблице subscriptions нет поля qbook
вот что Вам советовали сделать
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT authors.a_name, COUNT(subscriptions.sb_book) AS qbook
FROM books, authors, m2m_books_authors, subscriptions
WHERE books.b_id=m2m_books_authors.b_id
AND m2m_books_authors.a_id=authors.a_id
AND books.b_id=subscriptions.sb_book
GROUP BY authors.a_name
HAVING 
  COUNT(subscriptions.sb_book) = 
  (
    SELECT 
      MAX(qbook)
    FROM
    (
      SELECT COUNT(subscriptions.sb_book) AS qbook
      FROM books, authors, m2m_books_authors, subscriptions
      WHERE books.b_id=m2m_books_authors.b_id
      AND m2m_books_authors.a_id=authors.a_id
      AND books.b_id=subscriptions.sb_book
      GROUP BY authors.a_name
    )
  )
1
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,768
18.04.2022, 11:47
....
0
0 / 0 / 0
Регистрация: 18.04.2022
Сообщений: 26
18.04.2022, 11:59  [ТС]
AndreyVorobey, error 1248
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
18.04.2022, 12:04
Лучший ответ Сообщение было отмечено P1R4T как решение

Решение

P1R4T, а самостоятельно разобраться религия не позволяет?
нужно присвоить алиас запросу
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
...
HAVING 
  COUNT(subscriptions.sb_book) = 
  (
    SELECT 
      MAX(qbook)
    FROM
    (
      SELECT COUNT(subscriptions.sb_book) AS qbook
      FROM books, authors, m2m_books_authors, subscriptions
      WHERE books.b_id=m2m_books_authors.b_id
      AND m2m_books_authors.a_id=authors.a_id
      AND books.b_id=subscriptions.sb_book
      GROUP BY authors.a_name
    ) AS T
  )
1
0 / 0 / 0
Регистрация: 18.04.2022
Сообщений: 26
18.04.2022, 12:12  [ТС]
AndreyVorobey, Я пытался самостоятельно разобраться, но гугл тут не помогает. В треклятой методички по этим доп запросам в having ничего нет, я бы не додумался сам сделать запрос в having а потом в form, ужас.

Но, спасибо, очень помог. Можешь ещё объяснить почему не работает этот же код без as T ? Это же вроде ни на что не влияет.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
18.04.2022, 12:18
P1R4T,
Цитата Сообщение от P1R4T Посмотреть сообщение
Я пытался самостоятельно разобраться, но гугл тут не помогает.
а я откуда, по-Вашему, нашел решение по этому коду ошибки?
Цитата Сообщение от P1R4T Посмотреть сообщение
почему не работает этот же код без as T
сама ошибка отвечает на вопрос: Every derived table must have its own alias - Каждая производная таблица должна иметь свой собственный псевдоним.
0
0 / 0 / 0
Регистрация: 18.04.2022
Сообщений: 26
18.04.2022, 13:04  [ТС]
AndreyVorobey, Ну я рассчитывал, что тут мне ответят люди, разбирающиеся в sql)
Кажется, понял ошибку, спасибо. Остальные задачи видимо требуется решить похожим способом, буду пробовать.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
18.04.2022, 13:17
P1R4T,
Ну я рассчитывал, что тут мне ответят люди, разбирающиеся в sql
Не понял, что Вас не устраивает в ответе?
Во-первых, очень сомневаюсь, что тут есть люди, которые все ошибки наизусть знают по их коду.
Во-вторых, есть стандарты языка, которые заложены в основу. Это все равно что спрашивать, почему тип данных назвали nvarchar, ведь есть же string.
Так что неуместные слова в Вашем высказывании.
1
Эксперт .NET
 Аватар для Usaga
14314 / 9398 / 1355
Регистрация: 21.01.2016
Сообщений: 35,431
19.04.2022, 05:16
P1R4T, а вы как определяете разбирается человек в SQL или нет? По развёрнутости ответа? Так тут не школа как бы.

Все производные таблицы должны иметь псевдоним для устранения возможной неоднозначности при обращении к полям с одинаковыми именами из двух и более таблиц. Даже, если в вашем текущем запросе такой неоднозначности нет. Всё. И об этом вам текст ошибки явно и в глаза сообщает. Вам, что бы это принять, нужен специалист по SQL?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.04.2022, 05:16
Помогаю со студенческими работами здесь

Ошибка в коде программы RedBean: Base table or view already exists: 1050 Table 'users' already exists
Я пишу регистрацию на сайте через программу &quot;Red Bean&quot; Выдаёт такую ошибку: Fatal error: Uncaught - SQLSTATE: Base table or view...

Не понимаю как выглядит структура выборки через exists
Вот такое задание: 2.5.9. Приведите текст запроса для выборки данных о поставщиках, у которых есть товары с ценой, выше средней по всем...

Можно ли делать проверку через new DirectoryInfo(Path).Exists ?
Метод для проверки: Можно ли использовать данный метод? public static DirectoryInfo DirEx(string Path) { return new...

Найти максимум из девяти чисел (максимум из трех(максимум из двух)
Найти максимум из девяти чисел (максимум из трех(максимум из двух))

Ошибка MySQL error: Column count doesn't match value count at row 1
Подскажите, пожалуйста где тут ошибка? Вылазит ошибка: MySQL error: Column count doesn't match value count at row 1 INSERT INTO...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru