Помогите с запросом на выборку

yura_zo
Дата: 31.10.2005 09:14:16
Здравствуйте (FireBird 1.5)


У меня есть две таблицы

FLT
N A1 A2
1 1 2
2 2 3

ABONENT
N TITLE
1 Москва
2 Франкфурт
3 Нью-Йорк

Нужно получить в результате запроса

1 Москва Франкфурт
2 Франкфурт Нью-Йорк

Т.е. A1 и A2 в FLT - внешние ключи к таблице ABONENT
Понимаю что задача не сложная, но чего-то у меня не получается.
Помогите pls.
srf2000
Дата: 31.10.2005 09:18:21
yura_zo
Здравствуйте (FireBird 1.5)


У меня есть две таблицы

FLT
N A1 A2
1 1 2
2 2 3

ABONENT
N TITLE
1 Москва
2 Франкфурт
3 Нью-Йорк

Нужно получить в результате запроса

1 Москва Франкфурт
2 Франкфурт Нью-Йорк

Т.е. A1 и A2 в FLT - внешние ключи к таблице ABONENT
Понимаю что задача не сложная, но чего-то у меня не получается.
Помогите pls.


гм. в форуме Delphi уже же отвечали вам
Лентяй
Дата: 31.10.2005 09:18:43
Как пробовал, что не получилось?
yura_zo
Дата: 31.10.2005 09:26:13
Ну да отвечали. Свое самолюбие тешили. Там про алиасы мне кость кинули. А по конкретней мне чего-то и мпрашивать не захотелось, а пробовал по разному
Например

select t1.TITLE, t2.TITLE
from FLT inner join abonent on flt.A1 = ABONENT.N t1, FLT inner join abonent on
flt.A2 = ABONENT.N t2
Карабас Барабас
Дата: 31.10.2005 09:49:23
У тебя смесь явных и неявных джоинов, да и вобще ересь написана. Ты на сервер пробовал такое отправить ?

Posted via ActualForum NNTP Server 1.3

Лентяй
Дата: 31.10.2005 09:49:58
yura_zo
Ну да отвечали. Свое самолюбие тешили. Там про алиасы мне кость кинули. А по конкретней мне чего-то и мпрашивать не захотелось, а пробовал по разному
Например

select t1.TITLE, t2.TITLE
from FLT inner join abonent on flt.A1 = ABONENT.N t1, FLT inner join abonent on
flt.A2 = ABONENT.N t2

Юра, то что ты написал в принципе ничего не вернет, потому как это просто в синтаксис sql не вписывается. Тебе ж сервер отвечает что-то типа token unknown at line ... char ... Ну вот могу я тебе сейчас готовый sql написать, но толку-то. Ты ж со стедующим запросом опять сюда придешь. Давай начни с простого. Попробуй написать два запроса, которые вернут
FLT.N, FLT.A1 , ABONENT.TITLE (для A1)
и
FLT.N, FLT.A2 , ABONENT.TITLE (для A2)

А потом подумай как эти два запроса переписать одним...
yura_zo
Дата: 31.10.2005 10:11:11
select FLT.N, ABONENT.TITLE from FLT,ABONENT
where FLT.A1 = ABONENT.N
yura_zo
Дата: 31.10.2005 10:13:49
select FLT.N, ABONENT.TITLE from FLT,ABONENT
where FLT.A2 = ABONENT.N
Kull Damned
Дата: 31.10.2005 10:43:41
Ну а теперь ЕЩЕ раз присобачь ABONENT только по другому условию...
А потом помедитируй в сторону пары джойнов:
select ....
join ...
join ...
и будет тебе шастье :)

Posted via ActualForum NNTP Server 1.3

yura_zo
Дата: 31.10.2005 10:48:29
Хватит издеваться

Ну черканите мне чего там написать надо pls чтоб мне щастье было. Вам это ничего, но еще одно доброе дело на свой счет записать сможете.