powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Left join только первую запись по условию
7 сообщений из 7, страница 1 из 1
Left join только первую запись по условию
    #38837530
Samotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет. Есть две таблицы один ко многим надо получить запрос по первой, добавив поле из второй по первой попвшейся записи
Пробовал так
Код: plsql
1.
2.
3.
select a.id, t2.f2
from a
left join (select aid, f1, f2 from b where b.F1 = 1 rows 1) t2 on t2.aid = a.Id



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
a:
1
2
b:
aId f1 f2
1   1   1
2   1   2
2   1   3



хотел бы , чтоб таблица из left join возвращала только первую запись

Код: plsql
1.
2.
1 1
2 (2 или 3)


А получаю две записи(как и планировал), но во второй поле t2.f2 равно null. Вроде как выполнила первый запрос для left join, а потом только по его результатам для остальных записей. Как сделать то, что мне надо?
...
Рейтинг: 0 / 0
Left join только первую запись по условию
    #38837535
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Samotek!
You wrote on 18 декабря 2014 г. 19:41:33:

Samotek добавив поле из второй по первой попвшейся записи
йад в аптеке.
инвалидам бесплатно.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Left join только первую запись по условию
    #38837539
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Samotek,

http://www.firebirdsql.org/refdocs/langrefupd20-select.html#langrefupd20-first-skip
http://www.sql.ru/forum/605209/a-kak-rabotaet-select-first-xx

Но почему бы тебе вместо извращений не использовать нормальные агрегаты навроде MAX, MIN ?
...
Рейтинг: 0 / 0
Left join только первую запись по условию
    #38837540
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Samotek,

select a.id, MAX(b.f2) as f2
from a, b
where b.aid = a.Id
...
Рейтинг: 0 / 0
Left join только первую запись по условию
    #38837547
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или, если совсем хочется умучать сервер, то например

Код: sql
1.
2.
select a.id, (select f2 from b where b.aid = a.Id rows 1) f2
from a
...
Рейтинг: 0 / 0
Left join только первую запись по условию
    #38837569
Samotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch,
То есть напрямую нельзя. В принципе могу использовать MAX MIN спасибо не сообразил , а
Код: plsql
1.
2.
select a.id, (select f2 from b where b.aid = a.Id rows 1) f2
from a


не годится - в рельно выбранных полях b.f2 используется как параметр
Спасибо.
...
Рейтинг: 0 / 0
Left join только первую запись по условию
    #38837575
Samotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AriochSamotek,

http://www.firebirdsql.org/refdocs/langrefupd20-select.html#langrefupd20-first-skip
http://www.sql.ru/forum/605209/a-kak-rabotaet-select-first-xx

first то-же что и rows. Эти я попробовал - не получается, а с мах и мин завтра попробую, но должно получится.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Left join только первую запись по условию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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