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

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

03.06.2014, 20:18. Показов 1537. Ответов 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
1267 / 980 / 385
Регистрация: 02.09.2012
Сообщений: 3,027
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
1267 / 980 / 385
Регистрация: 02.09.2012
Сообщений: 3,027
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
1267 / 980 / 385
Регистрация: 02.09.2012
Сообщений: 3,027
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
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru