powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / SELECT в SELECT'е
3 сообщений из 3, страница 1 из 1
SELECT в SELECT'е
    #39949112
MrAdgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Имеем БД с информацией о перевозках. Не могу понять как организовать SELECT в SELECT'е. При помощи SUM нужно подсчитать сколько уже есть рейсов у водителя, из этого складываются %. Мне нужно, что бы подсчитывалось кол-во рейсов для каждого водителя отдельно, но не могу понять как это сделать.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT one.id_vodit as "ID водителя", fam as "Фамилия", voditel.name as "Имя", oth as "Отчество", date_in as "Дата отъезда", 
date_out as "Дата прибытия", moves.money + work.money + (work.money * (((sthaj/12)*10) + SUM(
	SELECT * 
	FROM work, voditel two 
	WHERE id_vodit = id_vod
        AND ID_ВНЕШН = ID_ВНУТР)))	
FROM moves, reis, voditel one, work
WHERE moves.id_move = reis.id_move
AND reis.id_reis = work.id_reis
AND id_vodit = id_vod
AND moves.id_move = 10



Нашёл информацию про cross apply, но не могу сообразить, как её встроить, и подходит ли она для этого случая.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select one.id
from table_1 one
cross apply( -- outer apply(
  select id
  from table_2 two
  where two.id=one.id
  )
group by one.id



Очень надеюсь на совет, потому что с запросом в запросе сталкиваюсь впервые, и факт того, что нужно информацию из первого запроса передать во второй плавит мозг. Приложил скриншот с таблицами из БД.
...
Рейтинг: 0 / 0
SELECT в SELECT'е
    #39949250
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT one.id_vodit as "ID водителя", fam as "Фамилия", voditel.name as "Имя", oth as "Отчество", date_in as "Дата отъезда", 
date_out as "Дата прибытия"
, moves.money + work.money + (work.money * (((sthaj/12)*10) + (SELECT count( id_work )
	FROM work c_work WHERE c_work.id_vod = one.id_vodit )))	

FROM moves, reis, voditel one, work
WHERE moves.id_move = reis.id_move
AND reis.id_reis = work.id_reis
AND id_vodit = id_vod
AND moves.id_move = 10
...
Рейтинг: 0 / 0
SELECT в SELECT'е
    #39949439
MrAdgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Guzya, получилось и работает, спасибо!
Разве что теперь нужно использовать вместо voditel ссылку one для других полей тоже, выделил восклицательными знаками. Большое спасибо!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT one.id_vodit as "ID водителя", fam as "Фамилия", !!!one!!!.name as "Имя", oth as "Отчество", date_in as "Дата отъезда", 
date_out as "Дата прибытия"
, moves.money + work.money + (work.money * (((sthaj/12)*10) + (
	SELECT count( id_work )
	FROM work c_work 
	WHERE c_work.id_vod = one.id_vodit )))	
FROM moves, reis, voditel one, work
WHERE moves.id_move = reis.id_move
AND reis.id_reis = work.id_reis
AND id_vodit = id_vod
AND moves.id_move = 10
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / SELECT в SELECT'е
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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