powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / составной запрос
25 сообщений из 36, страница 1 из 2
составной запрос
    #38605401
snowbrook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добрый день.. хочу понять составные запросы..
есть 3 таблицы
client(clientid,surname,phone,...),
clientseason(cseasonid,clientid,seasonid,...),
season(seasonid,typename,...)
допустим мне нужно вывести фамилии клиентов и телефоны, у которых тип абонемента "студенческий"..
вот мой запрос..

select surname, phone
from client
where clientid=(
select clientid from clientseason where seasonid= (
select seasonid from season where typeseason = 'студенческий 8'))

выдаёт ошибку..

Multiple rows in singleton select

Заранее спасибо!
...
Рейтинг: 0 / 0
составной запрос
    #38605402
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
snowbrookвыдаёт ошибку..

Multiple rows in singleton selectвсё правильно выдаёт.
тебе перевести?

а вообще join поможет отцу русской демократии.
...
Рейтинг: 0 / 0
составной запрос
    #38605407
snowbrook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
перевод понятен.. как исправить?
...
Рейтинг: 0 / 0
составной запрос
    #38605408
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
snowbrook> допустим мне нужно вывести фамилии клиентов и телефоны,
snowbrook> у которых тип абонемента "студенческий"..

Такое не подзапросами (а не составными запросами, как ты сказал)
надо делать, а явными (join) или неявными соединениями таблиц.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
составной запрос
    #38605411
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
snowbrookперевод понятен.. как исправить?join поможет отцу русской демократии.
...
Рейтинг: 0 / 0
составной запрос
    #38605419
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
select surname, phone
from client c
    join clientseason cs on c.clientid = cs.clientid
    join season s on (cs.seasonid = s.seasonid) and (s.typeseason = 'студенческий 8')



Прочитай лекции, справочник SQL.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
составной запрос
    #38605440
snowbrook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
благодарю, читаю как раз
...
Рейтинг: 0 / 0
составной запрос
    #38606018
snowbrook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а теперь, чтоб помимо этих данных ещё выводились данные datestart из clientseason..
делаю:

select surname, phone, datestart
from client c, clientseason cs
inner join clientseason on c.clientid = cs.clientid
inner join season s on (cs.seasonid = s.seasonid) and (s.typeseason = 'студенческий 8')

выводит почему-то не то, что хотелось бы..
...
Рейтинг: 0 / 0
составной запрос
    #38606035
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
snowbrookвыводит почему-то не то, что хотелось бы..
Очевидно потому, что ты пишешь не то что хотелось бы...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
составной запрос
    #38606045
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM: http://ibase.ru/devinfo/joins.htm
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
составной запрос
    #38606058
snowbrook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
отличная статья! благодарности!
...
Рейтинг: 0 / 0
составной запрос
    #38610846
anpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
snowbrookдобрый день.. хочу понять составные запросы..
есть 3 таблицы
client(clientid,surname,phone,...),
clientseason(cseasonid,clientid,seasonid,...),
season(seasonid,typename,...)
допустим мне нужно вывести фамилии клиентов и телефоны, у которых тип абонемента "студенческий"..
вот мой запрос..

select surname, phone
from client
where clientid=(
select clientid from clientseason where seasonid= (
select seasonid from season where typeseason = 'студенческий 8'))

выдаёт ошибку..

Multiple rows in singleton select

Заранее спасибо!

а зачем такое извращение? ты бы еще штук 5 скрытых джоинов сделал в веаре...

Код: sql
1.
2.
3.
4.
5.
select cl.surname, cl.phone
from season s
left join clientseason cls on cls.seasonid=s.id
left join client cl on cl.id=cls.clientid
where  s.typeseason=8


всех полей в твоих таблицах не знаю... Там где ID это интуитивно догадываюсь что такие поля :)
...
Рейтинг: 0 / 0
составной запрос
    #38610853
anpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
snowbrookа теперь, чтоб помимо этих данных ещё выводились данные datestart из clientseason..
делаю:

select surname, phone, datestart
from client c, clientseason cs
inner join clientseason on c.clientid = cs.clientid
inner join season s on (cs.seasonid = s.seasonid) and (s.typeseason = 'студенческий 8')

выводит почему-то не то, что хотелось бы..

Отучайся от такого рода запросов... если данных не много то обрабатываться будет нормально! Но в таблицах где миллионы строк, такие селекты будут обрабатываться часами...

это я об этом:
Код: sql
1.
 from client c, clientseason cs



а это вобще бред... что ты этим хотел сделать?
Код: sql
1.
2.
3.
4.
select surname, phone, datestart
from client c, clientseason cs
    inner join clientseason on c.clientid = cs.clientid
    inner join season s on (cs.seasonid = s.seasonid) and (s.typeseason = 'студенческий 8')


особенно не пойму
Код: plsql
1.
2.
from client c, clientseason cs
    inner join clientseason on c.clientid = cs.clientid
...
Рейтинг: 0 / 0
составной запрос
    #38610864
anpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Код: sql
1.
2.
3.
4.
select surname, phone
from client c
    join clientseason cs on c.clientid = cs.clientid
    join season s on (cs.seasonid = s.seasonid) and (s.typeseason = 'студенческий 8')



Прочитай лекции, справочник SQL.


у него веар только по одной таблице... по этому плясать лучше начинать от нее

Код: sql
1.
2.
from season s
where s.typeseason = 'студенческий 8'
...
Рейтинг: 0 / 0
составной запрос
    #38610889
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anplу него веар только по одной таблице... по этому плясать лучше начинать от нее
уверен что " плясать лучше начинать от нее "???
...
Рейтинг: 0 / 0
составной запрос
    #38610894
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
snowbrookа теперь, чтоб помимо этих данных ещё выводились данные datestart из clientseason..
делаю:

select surname, phone, datestart
from client c, clientseason cs
inner join clientseason on c.clientid = cs.clientid
inner join season s on (cs.seasonid = s.seasonid) and (s.typeseason = 'студенческий 8')

выводит почему-то не то, что хотелось бы..
алиасы таблицы необходимо использовать, чтобы не путаться.
...
Рейтинг: 0 / 0
составной запрос
    #38610896
anpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7manplу него веар только по одной таблице... по этому плясать лучше начинать от нее
уверен что " плясать лучше начинать от нее "???
уверен что
Код: sql
1.
2.
3.
4.
5.
select cl.surname, cl.phone
from season s
left join clientseason cs on cs.seasonid = s.seasonid
left join client cl on cl.clientid = cs.clientid
where s.typeseason = 'студенческий 8'


будет выполнятся быстрее чем:

Код: sql
1.
2.
3.
4.
select surname, phone
from client c
    join clientseason cs on c.clientid = cs.clientid
    join season s on (cs.seasonid = s.seasonid) and (s.typeseason = 'студенческий 8')
...
Рейтинг: 0 / 0
составной запрос
    #38610940
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anpl,
а я вот не уверен в этом.
Более того я уверен что по времени выполнения разницы не будет
...
Рейтинг: 0 / 0
составной запрос
    #38610944
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7manpl,
а я вот не уверен в этом.
Более того я уверен что по времени выполнения разницы не будетнужны планы, чтобы не спорить.
выкладывайте уже кто-нибудь.
...
Рейтинг: 0 / 0
составной запрос
    #38610950
anpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7manpl,
а я вот не уверен в этом.
Более того я уверен что по времени выполнения разницы не будет
разница будет пропорциональна количеству строк в таблицах...
...
Рейтинг: 0 / 0
составной запрос
    #38610952
anpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roadsterm7manpl,
а я вот не уверен в этом.
Более того я уверен что по времени выполнения разницы не будетнужны планы, чтобы не спорить.
выкладывайте уже кто-нибудь.
а вот здесь согласен! ) нужны планы... не известно что там за база...
...
Рейтинг: 0 / 0
составной запрос
    #38610972
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anplа вот здесь согласен! ) нужны планы... не известно что там за база...надо нагенерить данных.
таблиц немного.
давайте уже, займитесь кто-нибудь.
ЗЫ просто интересно.
...
Рейтинг: 0 / 0
составной запрос
    #38611041
anpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roadsteranplа вот здесь согласен! ) нужны планы... не известно что там за база...надо нагенерить данных.
таблиц немного.
давайте уже, займитесь кто-нибудь.
ЗЫ просто интересно.

Как то так
С ключами и индексами

Plan
PLAN JOIN (JOIN (S INDEX (SEASON_TYPESEASON), CS INDEX (RDB$FOREIGN58)), CL INDEX (RDB$PRIMARY79))

Adapted Plan
PLAN JOIN (JOIN (S INDEX (SEASON_TYPESEASON), CS INDEX (FK_SEASON_CLIENTSEASON_SEASONID)), CL INDEX (INTEG_223))

------ Performance info ------
Prepare time = 0ms
Execute time = 15ms
Avg fetch time = 7,50 ms
Current memory = 10 649 144
Max memory = 18 250 804
Memory buffers = 256
Reads from disk to cache = 7
Writes from cache to disk = 0

---
Plan
PLAN JOIN (CL NATURAL, CS INDEX (RDB$FOREIGN59), S INDEX (RDB$PRIMARY23))

Adapted Plan
PLAN JOIN (CL NATURAL, CS INDEX (FK_CLIENT_CLIENTSEASON_CLIENTID), S INDEX (INTEG_52))

------ Performance info ------
Prepare time = 0ms
Execute time = 624ms
Avg fetch time = 312,00 ms
Current memory = 10 554 192
Max memory = 18 250 804
Memory buffers = 256
Reads from disk to cache = 3 349
Writes from cache to disk = 0
...
Рейтинг: 0 / 0
составной запрос
    #38611047
anpl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первый план на
Код: sql
1.
2.
3.
4.
5.
select cl.surname, cl.phone
from season s
left join clientseason cs on cs.seasonid = s.seasonid
left join client cl on cl.clientid = cs.clientid
where s.typeseason = 'студенческий 8'


второй
Код: sql
1.
2.
3.
4.
select surname, phone
from client c
    join clientseason cs on c.clientid = cs.clientid
    join season s on (cs.seasonid = s.seasonid) and (s.typeseason = 'студенческий 8')
...
Рейтинг: 0 / 0
составной запрос
    #38611048
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anplReads from disk to cache = 7
...
Reads from disk to cache = 3 349вау
прикольно.
надо запомнить.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / составной запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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