Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 13.03.2014
Сообщений: 23

Правильное написание VIEW

03.06.2014, 20:18. Показов 1475. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день
Есть проблемка с правильным выводом результата запроса.
Существует такой запрос: Вывести фио и паспорт заказчиков, ВСЕ заказы которых содержали более одного экземпляра автомобиля.Отсортировать по фио и паспорту.
Я не зря выделил слово ВСЕ, так как моей ошибкой является именно то,что я вывожу заказчиков, у которых просто кол-во заказанных авто превышает 1.
Как реализовать данное, я пока что только в догадках,помогите найти правильный путь)
вот что я писал:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE VIEW counte AS
SELECT customers.id_password AS idp, COUNT(exzemp.id) AS cnt
FROM customers
JOIN orders ON (orders.id_customer=customers.id_password)
JOIN exzemp ON (SELECT FIO, id_password, exzemp.id_order=orders.id)
GROUP BY customers.id_password, orders.id
HAVING COUNT(exzemp.id)>1
;
 
SELECT FIO, id_password, 
FROM counte
JOIN customers ON (customers.id_password=counte.idp)
ORDER BY FIO, id_password
;
Схема прилагается)
Миниатюры
Правильное написание VIEW  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.06.2014, 20:18
Ответы с готовыми решениями:

Правильное написание
У меня есть меню <a href="{home}" class="menu"><div class="menuf">ГЛАВНАЯ</div></a> <a href="/plugin/statistic/"...

Как реализовать правильное отображение View элементов?
Здравствуйте! Хочу реализовать что-то похожее, но не пойму как добиться того, чтоб иконка справа отображалась в свой реальный размер, а...

Правильное написание 2х окон
Всем привет, недавно я начал изучать java, пишу на netbeans 8(соответственно рисую gui:)) Сюда написать меня заставили некоторые вопросы...

7
0 / 0 / 0
Регистрация: 13.03.2014
Сообщений: 23
03.06.2014, 20:20  [ТС]
забыл написать,что так как я группирую еще и по айди заказа,то у меня не учитываются те заказы в которых кол-во не превышает 1
0
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
04.06.2014, 15:31
Сделайте представление с подсчетом количества всех экземпляров автомобилей в каждом заказе.
Далее по этому представлению легко найдете то, что требуется.
0
0 / 0 / 0
Регистрация: 13.03.2014
Сообщений: 23
05.06.2014, 00:00  [ТС]
то есть оставить предыдущее представление, создать точно такое же,но без HAVING
и с помощью селекта совместить эти два представления?

Добавлено через 58 минут
я попробовал еще вот так сделать:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE VIEW A AS
SELECT customers.id_password AS idp
FROM customers
JOIN orders ON (orders.id_customer=customers.id_password)
JOIN exzemp ON (exzemp.id_order=orders.id)
GROUP BY customers.id_password
;
 
CREATE VIEW B AS
SELECT customers.id_password AS idp
FROM customers
JOIN orders ON (orders.id_customer=customers.id_password)
JOIN exzemp ON (exzemp.id_order=orders.id)
GROUP BY customers.id_password
HAVING COUNT(exzemp.id)=1
;
 
SELECT FIO, id_password
FROM customers
JOIN A ON (A.idp=customers.id_password)
JOIN B ON (B.idp=customers.id_password)
WHERE A.idp<>B.idp
;
выводит ноль
хотя есть заказчики у которых всего один заказ с несколькими машинами,но должен ведь все равно работать
0
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
05.06.2014, 02:00
Лучший ответ Сообщение было отмечено Denis1922 как решение

Решение

Кликните здесь для просмотра всего текста
Наверно так

SQL
1
2
3
4
5
CREATE VIEW orders2 AS
SELECT o.*, (SELECT COUNT(*) FROM exzemp e WHERE e.id_order = o.id) AS allcnt
FROM orders o;
 
SELECT c.FIO, c.id_passport FROM orders2 o, customer c WHERE o.id_customer = c.id_passport AND o.allcnt > 1;
Почему для паспорта используется password ?? так и будет - passport


Ааа... стоп.... неправильно!! ВСЕ заказы !!! Не понял сходу...

Добавлено через 14 минут
Представление orders2 остается (под спойлером)

SQL
1
2
3
4
5
6
7
CREATE VIEW customer2 AS
SELECT c.*,
(SELECT COUNT(*) FROM orders2 o WHERE o.id_customer = c.id_passport) AS allorders,
(SELECT COUNT(*) FROM orders2 o WHERE o.id_customer = c.id_passport AND o.allcnt > 1) AS allorders2
FROM customer c;
 
SELECT FIO, id_passport FROM customer2 WHERE allorders = allorders2;
Вроде так, проверяйте.
1
0 / 0 / 0
Регистрация: 13.03.2014
Сообщений: 23
05.06.2014, 07:25  [ТС]
Вроде как все получилось)
можно только уточнить пару моментов, впервые встречаю написание такое:

o.* что это означает? все значения из orders?
COUNT(*) и вот это

спасибо огромное, вы сдвинули меня с места)причем очень значительно
0
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
05.06.2014, 14:24
Цитата Сообщение от Denis1922 Посмотреть сообщение
o.* что это означает? все значения из orders?
Это означает все поля из orders.

Цитата Сообщение от Denis1922 Посмотреть сообщение
COUNT(*) и вот это
ну это подсчет количества записей в выборке. Тоже стандартная конструкция.
0
0 / 0 / 0
Регистрация: 13.03.2014
Сообщений: 23
05.06.2014, 22:59  [ТС]
Ну да,я так и предполагал,просто не использовал такую конструкцию, зато теперь стали богаче знания)
Можно я поспрашиваю еще, хочется разобраться полностью,просто все равно до конца не уверен,что понимаю где что, не сочтите глупым, просто если попросил помощи, то надо разобрать вашу мысль)

Первое представление orders2 оно нам считает кол-во экземпляров авто в каждом заказе,так?
что такое :
WHERE e.id_order = o.id
я немного запутался, мне почему то в голову приходит,что это соединение таблиц exzemp и orders
и почему мы не используем группировку?

Второе представление, как я понял, нам выдает два столбца: один сколько заказов вообще у заказчика, а второй сколько заказов у заказчика,где машин более одной, правильно?
И тот же вопрос про WHERE

Буду очень благодарен,если еще раз объясните)

Добавлено через 1 час 11 минут
Да, самый главный вопрос это про WHERE

Добавлено через 3 часа 21 минуту
и правильно ли я подставил вместо * , поля?
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE VIEW orders2 AS
SELECT o.id_customer, 
      (SELECT COUNT(id) 
       FROM exzemp e
       WHERE e.id_order = o.id) AS allcnt
FROM orders o;
 
 
CREATE VIEW customer2 AS
SELECT c.id_password,c.fio,
    (SELECT COUNT(id_customer) 
     FROM orders2 o 
     WHERE o.id_customer = c.id_password) AS allorders,
    (SELECT COUNT(id_customer)
     FROM orders2 o
     WHERE o.id_customer = c.id_password AND o.allcnt > 1) AS allorders2
FROM customers c;
 
 
SELECT FIO, id_password 
FROM customer2 
WHERE allorders = allorders2
ORDER BY FIO, id_password;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.06.2014, 22:59
Помогаю со студенческими работами здесь

Правильное написание кода
Привет народ,я с таким вопросом. Хотелось бы приучать себя к правильному коду на ранних стадиях,поэтому возникает много вопросов. Один из...

Правильное ли написание синглтона?
Это будет правильное написание синглотона? class Singleton{ protected static $instance; protected function...

Проверить правильное написание IP
Пытаюсь проверить верное написание IP, нужно из строки взять четыре числа и проверить их на 0&lt;=x&lt;=255. допустим что-то типа примера,...

Правильное написание скобок
Уважаемые эксперты! Памагите разобраться.... надо чтобы при вводе любого математического выражения проверялось правильное написание...

Правильное написание присвоения
Доброго времени суток. Есть такое выражение, подскажите пожалуйста как его правильно записать? i,ii:integer; ... i :=...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru