powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос
19 сообщений из 19, страница 1 из 1
Запрос
    #39654837
lyuthe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Помогите составить запрос на вывод спектаклей, которые в расписании мелькают один и более раз. Точнее, просто скажите, что у меня не так (я пыталась). Мне нужно, чтобы вывелось название, с номерами у меня вышло.
...
Рейтинг: 0 / 0
Запрос
    #39654839
lyuthe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Запрос
    #39654843
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перенеси условие соединения в where.

З.Ы. объясните мне, пожалуйста, в чём прелесть джойнить таблицы в where, a не в from'e?
...
Рейтинг: 0 / 0
Запрос
    #39654846
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DshedooПеренеси условие соединения в where.

З.Ы. объясните мне, пожалуйста, в чём прелесть джойнить таблицы в where, a не в from'e?

Ты сам запрос то видел?
Что тут перенос условия изменит?
У него группировка по ID, а вернуть он хочет name.
Соединение можно оставить под having, ничего это не меняет.
...
Рейтинг: 0 / 0
Запрос
    #39654851
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lyuthe,

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

Условие "вывод спектаклей, которые в расписании мелькают один и более раз" можно перефразировать так: "вывод спектаклей, для которых существует расписание".
Получается, вам нужен EXISTS-подзапрос... :)

Можно двигаться и вашим путем - джойн + GROUP BY + HAVING.
Но тогда решайте задачу поэтапно - для начала напишите логически правильный джойн спектаклей с расписанием.
Далее - добавьте группировку по спектаклю с просчетом количества расписаний. И уж последним штрихом будет постгруппировочная фильтрация результата при помощи HAVING.
...
Рейтинг: 0 / 0
Запрос
    #39654852
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dshedoo,

сами с собой ведете беседу? или перелогиниться забыли? ;)
...
Рейтинг: 0 / 0
Запрос
    #39654860
lyuthe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна, упс, неправильно сформулировала. более одного раза
...
Рейтинг: 0 / 0
Запрос
    #39654949
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lyuthe,

select max(spnames) spnames
from timetable,spectable
where timetable.idsp=spectable.idsp
group by timetable.idsp having count(*)>1

....
stax
...
Рейтинг: 0 / 0
Запрос
    #39654964
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxlyuthe,

select max(spnames) spnames
from timetable,spectable
where timetable.idsp=spectable.idsp
group by timetable.idsp having count(*)>1

....
stax

Умный человек, скажите, пожалуйста, в чём прелесть:
Код: plsql
1.
2.
from timetable,spectable
where timetable.idsp=spectable.idsp


в отличии от этого:
Код: plsql
1.
from timetable inner join spectable on timetable.idsp=spectable.idsp



Или киньте в меня ссыль на сакральные знания, потому что выгуглить не удалось.
...
Рейтинг: 0 / 0
Запрос
    #39654973
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И снова тот же вопрос - где на Oracle учат SQLю
...
Рейтинг: 0 / 0
Запрос
    #39654991
alwan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DshedooStaxlyuthe,

select max(spnames) spnames
from timetable,spectable
where timetable.idsp=spectable.idsp
group by timetable.idsp having count(*)>1

....
stax

Умный человек, скажите, пожалуйста, в чём прелесть:
Код: plsql
1.
2.
from timetable,spectable
where timetable.idsp=spectable.idsp


в отличии от этого:
Код: plsql
1.
from timetable inner join spectable on timetable.idsp=spectable.idsp



Или киньте в меня ссыль на сакральные знания, потому что выгуглить не удалось.

А в чем проблема то? Чем этот вид плох? Мне, например, иногда удобнее сначала перемножить все таблицы а потом уже описывать фильтрацию.

Ну и оракл все равно перепишет запрос на свой нативный язык, что, в принципе, тоже не важно в данном контексте.
...
Рейтинг: 0 / 0
Запрос
    #39655017
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DshedooStaxlyuthe,

select max(spnames) spnames
from timetable,spectable
where timetable.idsp=spectable.idsp
group by timetable.idsp having count(*)>1

....
stax

Умный человек, скажите, пожалуйста, в чём прелесть:
Код: plsql
1.
2.
from timetable,spectable
where timetable.idsp=spectable.idsp


в отличии от этого:
Код: plsql
1.
from timetable inner join spectable on timetable.idsp=spectable.idsp



Или киньте в меня ссыль на сакральные знания, потому что выгуглить не удалось.

на счет умный вы перегнули

версия не озвучена, мож у lyuthe 7-й оракля

а так привычка, мне так удобнее, особенно если табличек не две

тема частенько поднимается, можете поискать
...
Рейтинг: 0 / 0
Запрос
    #39655044
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DshedooУмный человек, скажите, пожалуйста, в чём прелесть:
Код: plsql
1.
2.
from timetable,spectable
where timetable.idsp=spectable.idsp


в отличии от этого:
Код: plsql
1.
from timetable inner join spectable on timetable.idsp=spectable.idsp


Или киньте в меня ссыль на сакральные знания, потому что выгуглить не удалось.
Первое - нативный синтаксис oracle rdbms.
Второе - благоприобретение последних лет, которое оптимизатор склонен переписывать в первое.
Ну и многабукф...
...
Рейтинг: 0 / 0
Запрос
    #39655092
lyuthe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax, спасибо огромное, Вы мне в который раз уже помогаете с моими запросами!
...
Рейтинг: 0 / 0
Запрос
    #39655112
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lyutheStax, спасибо огромное, Вы мне в который раз уже помогаете с моими запросами!
незачто (как говорит Елик - медвежья услуга)

зы
я если не ленился то сначала искал idsp, а потом уже прикручивал расшифровку (spnames)

......
stax
...
Рейтинг: 0 / 0
Запрос
    #39655140
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lyuthe,
Может и так
Код: plsql
1.
2.
SELECT * FROM spectable S
WHERE (SELECT COUNT(*) FROM timetable T  WHERE T.idsp = S.idsp) >= 1



или
Код: plsql
1.
2.
SELECT * FROM spectable S
WHERE EXISTS (SELECT * FROM timetable T  WHERE T.idsp = S.idsp)



В таблице спектаклей, вероятно нет повторов. Если "1 и более в расписание", то достаточно проверить существование в timetable, т.е. корреляцию.

Первый даёт возможность узнать сколько конкретно, изменяя неравенство.

Если я правильно понял задачу. Вам же не ставится в вопросе указать цену билета и/или дату спектакля.
...
Рейтинг: 0 / 0
Запрос
    #39655310
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,
Код: plsql
1.
2.
3.
4.
5.
select
 max(spnames) spnames
from timetable,spectable
where timetable.idsp=spectable.idsp
group by timetable.idsp having count(*)>1


Зачем? При таком объединении записи или будут, если есть хоть один раз в расписании или их не будет вообще.
что просил автор
Код: plsql
1.
2.
3.
4.
5.
select
 spnames -- название спектакля
from timetable t,spectable s
where t.idsp=s.idsp
group by s.spnames



если добавить количество спектаклей то:
Код: plsql
1.
2.
3.
4.
5.
6.
select
 spnames, -- название спектакля
 count(t.*) count_sp -- его количество в расписании
from timetable t,spectable s
where t.idsp=s.idsp
group by s.spnames
...
Рейтинг: 0 / 0
Запрос
    #39655315
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stells2Зачем? Если вы про HAVING, то, очевидно, затем, что автор сделал уточнение:lyutheболее одного раза
...
Рейтинг: 0 / 0
Запрос
    #39655319
Фотография stells2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна,
Да, в тексте затерялось уточнение :)
Тогда или
Код: plsql
1.
2.
SELECT * FROM spectable S
WHERE (SELECT COUNT(*) FROM timetable T  WHERE T.idsp = S.idsp) > 1


или
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
select
 spnames -- название спектакля
-- если надо ,count(t.*) count_sp -- его количество в расписании
-- если надо ,max(t.price) price -- стоимость билета
from timetable t,spectable s
where t.idsp=s.idsp
group by s.spnames
having count(t.*)>1


Вероятно, первый предпочтительней.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]