Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 22.12.2014
Сообщений: 210
1

Запрос на подсчет изданий

12.02.2016, 23:45. Показов 951. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! вот еще один запросик, с которым не могу совладать(( Нужно вывести издания, которые никто не брал за последние 2 месяца от текущей даты. Вот мои наработки, но выводит что-то не совсем то, помогите пожалуйста разобраться. Заранее всем спасибо

Oracle 11 SQL
1
2
3
4
5
SELECT книги.название AS name FROM ЗАКАЗ_ЧИТ заказ_читателя, заказ, книги 
WHERE заказ_читателя.id_заказа=заказ.id_заказа AND ADD_MONTHS(SYSDATE,-2)>д_выдачи 
AND заказ.id_книги=книги.id_книги UNION SELECT периодика.название AS name FROM ЗАКАЗ_ЧИТ заказ_читателя, заказ, периодика 
WHERE заказ_читателя.id_заказа=заказ.id_заказа AND ADD_MONTHS(SYSDATE,-2)>д_выдачи 
AND заказ.id_периодики=периодика.id_периодики;
Миниатюры
Запрос на подсчет изданий  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2016, 23:45
Ответы с готовыми решениями:

Решение для периодических электронных изданий
Здравствуйте всем! Интересует вопрос: Хочется сделать оболочку для электронного журнала под...

Напечатать список, упорядоченный по годам изданий
Рассматривать не менее 10 записей. Дан список, состоящий из названия книг, фамилия авторов,...

Запрос на подсчет
Здравствуйте. Имеется база данных с танцорами и информации по ним. Необходимо составить запрос,...

Количество изданий по всем жанрам для издателя
Доброго времени суток. Есть некий запрос, который гласит: "Получить количество изданий по всем...

14
105 / 49 / 26
Регистрация: 01.09.2014
Сообщений: 140
14.02.2016, 00:21 2
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT *
FROM издательтсва iz
WHERE NOT EXISTS( 
    SELECT NULL FROM 
        ЗАКАЗ_ЧИТ заказ_читателя,
        заказ,
        книги,
        издательтсва
    WHERE заказ_читателя.id_заказа=заказ.id_заказа
        AND заказ.id_книги=книги.id_книги
        AND издательтсва.id_издателсьтва=книги.id_издателсьтва
        AND издательтсва.id_издателсьтва=iz.id_издателсьтва
        AND ADD_MONTHS(trunc(SYSDATE,'DD'),-2) >= заказ_читателя.дата_выдачи
        )
0
0 / 0 / 1
Регистрация: 22.12.2014
Сообщений: 210
14.02.2016, 11:18  [ТС] 3
ORA-00942: table or view does not exist
0
105 / 49 / 26
Регистрация: 01.09.2014
Сообщений: 140
14.02.2016, 11:19 4
Не ну тут уж сами)
проверьте правильность написания названий таблиц...
0
0 / 0 / 1
Регистрация: 22.12.2014
Сообщений: 210
14.02.2016, 11:34  [ТС] 5
Ок, сейчас перепроверю, спасибо. Вопрос только, вот после AND сначала название таблицы?

Добавлено через 9 минут
Все нашел где опечатка была, теперь вот что ORA-00904: "ЗАКАЗ_ЧИТАТЕЛЯ"."ДАТА_ВЫДАЧИ": invalid identifier

здесь что исправить нужно?
0
105 / 49 / 26
Регистрация: 01.09.2014
Сообщений: 140
14.02.2016, 11:39 6
название поля "дата выдачи" проверьте...
0
0 / 0 / 1
Регистрация: 22.12.2014
Сообщений: 210
14.02.2016, 11:51  [ТС] 7
выдал результат, что не найдено таких. Но у меня вопрос, мы ищем издательства, которые не брали? а нужно издания, то есть книги и журналы(их названия). Я смотрел по своей заполненной БД, выводиться должны практически все.

Добавлено через 6 минут
Вот еще у меня один вариант есть, выводит издания, но не все, которые по идее должны быть
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT книги.название AS name
FROM
(SELECT id_заказа, MAX(д_выдачи) md
FROM ЗАКАЗ_ЧИТ заказ_читателя
GROUP BY id_заказа
HAVING MAX(д_выдачи)<ADD_MONTHS(SYSDATE,-2)
) a,
заказ, книги
WHERE a.id_заказа=заказ.id_заказа
                   AND заказ.id_книги=книги.id_книги
UNION   
SELECT периодика.название AS name 
FROM
(SELECT id_заказа, MAX(д_выдачи) md
FROM ЗАКАЗ_ЧИТ заказ_читателя
GROUP BY id_заказа
HAVING MAX(д_выдачи)<ADD_MONTHS(SYSDATE,-2)
) a,
         заказ, 
         периодика
WHERE a.id_заказа=заказ.id_заказа
          AND  заказ.id_периодики=периодика.id_периодики;
0
105 / 49 / 26
Регистрация: 01.09.2014
Сообщений: 140
14.02.2016, 11:55 8
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT 
    k.название
FROM книги k
WHERE 
NOT EXISTS( 
    SELECT NULL FROM 
        ЗАКАЗ_ЧИТ заказ_читателя,
        заказ,
        книги
    WHERE заказ_читателя.id_заказа=заказ.id_заказа
        AND заказ.id_книги=книги.id_книги
        AND k.id_книги=книги.id_книги
        AND ADD_MONTHS(trunc(SYSDATE,'DD'),-2) >= заказ_читателя.д_выдачи
        )
0
0 / 0 / 1
Регистрация: 22.12.2014
Сообщений: 210
14.02.2016, 12:00  [ТС] 9
Не то((((( вывел только одну книгу, и ни одного журнала((( Заказов за 2 месяца не было вообще, значит все должны выводиться
0
105 / 49 / 26
Регистрация: 01.09.2014
Сообщений: 140
14.02.2016, 12:04 10
Выполните
SQL
1
2
3
4
5
6
7
8
SELECT книги.*, заказ_читателя.*,заказ.*
FROM 
        ЗАКАЗ_ЧИТ заказ_читателя,
        заказ,
        книги
    WHERE заказ_читателя.id_заказа=заказ.id_заказа
        AND заказ.id_книги=книги.id_книги
        AND ADD_MONTHS(trunc(SYSDATE,'DD'),-2) >= заказ_читателя.д_выдачи
Это все заказы которые сделаны за последние 2 месяца, результат в студию
0
0 / 0 / 1
Регистрация: 22.12.2014
Сообщений: 210
14.02.2016, 12:23  [ТС] 11
посмотрите на дату выдачи, такого ведь не может быть
Миниатюры
Запрос на подсчет изданий  
0
105 / 49 / 26
Регистрация: 01.09.2014
Сообщений: 140
14.02.2016, 12:47 12
Ошибся в датах... попробуйте так
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT 
    k.название
FROM книги k
WHERE 
NOT EXISTS( 
    SELECT NULL FROM 
        ЗАКАЗ_ЧИТ заказ_читателя,
        заказ,
        книги
    WHERE заказ_читателя.id_заказа=заказ.id_заказа
        AND заказ.id_книги=книги.id_книги
        AND k.id_книги=книги.id_книги
        AND заказ_читателя.д_выдачи >= ADD_MONTHS(trunc(SYSDATE,'DD'),-2)
        )
0
0 / 0 / 1
Регистрация: 22.12.2014
Сообщений: 210
14.02.2016, 12:55  [ТС] 13
Ок, все книги вывел)))) ура, спасибо! осталось еще журналы сюда приписать, поможете?
0
105 / 49 / 26
Регистрация: 01.09.2014
Сообщений: 140
14.02.2016, 13:07 14
Лучший ответ Сообщение было отмечено kirill88 как решение

Решение

Ну если я правильно понял то както так
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SELECT 
    k.название name
FROM книги k
WHERE 
NOT EXISTS( 
    SELECT NULL FROM 
        ЗАКАЗ_ЧИТ заказ_читателя,
        заказ,
        книги
    WHERE заказ_читателя.id_заказа=заказ.id_заказа
        AND заказ.id_книги=книги.id_книги
        AND k.id_книги=книги.id_книги
        AND заказ_читателя.д_выдачи >= ADD_MONTHS(trunc(SYSDATE,'DD'),-2)
        )
UNION ALL
SELECT 
    p.название name
FROM периодики p
WHERE 
NOT EXISTS( 
    SELECT NULL FROM 
        ЗАКАЗ_ЧИТ заказ_читателя,
        заказ,
        периодики
    WHERE заказ_читателя.id_заказа=заказ.id_заказа
        AND заказ.id_периодики=периодики.id_периодики
        AND p.id_периодики=периодики.id_периодики
        AND заказ_читателя.д_выдачи >= ADD_MONTHS(trunc(SYSDATE,'DD'),-2)
        )
1
0 / 0 / 1
Регистрация: 22.12.2014
Сообщений: 210
14.02.2016, 13:10  [ТС] 15
Все отлично, большое Вам спасибо!!!!!
0
14.02.2016, 13:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2016, 13:10
Помогаю со студенческими работами здесь

Запрос на подсчет количества
Здравствуйте У меня возникла задача, подозреваю, что решить ее не сложно, но никак не могу...

Запрос на подсчет количества
Приветствую! У меня в базе есть таблицы &quot;Школы&quot; и &quot;Ученики&quot;. Связаны через таблицу...

Запрос на подсчет количества
Здравствуйте. Как можно реализовать запрос, который выводит курсы, на которых студентов больше, чем...

Запрос на сложный подсчет
Здравствуйте, умы аксесса! Прошу помочь правильно составить запрос. Суть такова: Таблица1: шифр...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru