![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как составить запрос [D6, FB 2.0]
O.O © (2007-03-30 07:34:00)Допустим есть таблица справочника Т1, в котором поле Field2 содержит номер записи из другой таблицы (номенклатур) Т2.
Ключевое поле у неё Field1, поле имени, которое мы хотим видеть в результирующем наборе - Field2
Составляем запрос:
SELECT T1.Field1, T1.Field2, T2.Field2 from T1
Join T2 on T1.Field2 = T2.Field1
А если в первой таблице не одно поле номером записи из таблицы Т2 а несколько из одной и той-же таблицы, как сделать запрос, чтоб видеть в одной строке результирующего набора расшифровку этих разных полей?
O.O (2007-03-30 11:15:00) [1]
> ЮЮ © (30.03.07 11:07) [9]
Вот как. Теперь понял. А сначала недопёрло до меня. Спасибо !
O.O (2007-03-30 11:13:00) [2]Как предлагал Sergey13
SELECT DOCS.*, FIRMA.NAME AS F_From, FIRMA.NAME AS F_To
FROM DOCS
LEFT OUTER JOIN FIRMA F_1 ON DOCS.KOD_PARTNER_EXPORT = FIRMA.KOD
LEFT OUTER JOIN FIRMA F_2 ON DOCS.KOD_PARTNER_IMPORT = FIRMA.KOD
Тоже ошибка
Как предлагал ЮЮ - там 3 таблицы
ЮЮ (2007-03-30 11:07:00) [3]SELECT DOCS.*, exp.NAME AS F_From, imp.NAME AS F_To FROM DOCS
LEFT OUTER JOIN FIRMA exp ON DOCS.KOD_PARTNER_EXPORT = exp.KOD
LEFT OUTER JOIN FIRMA imp ON DOCS.KOD_PARTNER_IMPORT = imp.KOD
Jan (2007-03-30 10:58:00) [4]
> LEFT OUTER JOIN FIRMA ON DOCS.KOD_PARTNER_EXPORT = FIRMA.
> KOD
> LEFT OUTER JOIN FIRMA ON DOCS.KOD_PARTNER_IMPORT = FIRMA.
> KOD
тебе про алиасы говорили?
O.O (2007-03-30 10:57:00) [5]
SELECT DOCS.*, FIRMA.NAME AS F_From, FIRMA.NAME AS F_To FROM DOCS
LEFT OUTER JOIN FIRMA ON DOCS.KOD_PARTNER_EXPORT = FIRMA.KOD
LEFT OUTER JOIN FIRMA ON DOCS.KOD_PARTNER_IMPORT = FIRMA.KOD
Ошибка 204
Abiguous field names between table Firma and Table Firma KOD
Sergey13 (2007-03-30 10:00:00) [6]> [5] O.O (30.03.07 09:50)
Так у тебя в голове что-то ругается при обдумывании запроса или конкретный текст при запуске выдает ошибки? Приведи текст, который выдает ошибки.
O.O (2007-03-30 09:50:00) [7]
> ЮЮ © (30.03.07 09:41) [4]
> Приведи реальный текст запроса
Дык и не могу составить :)
Опишу задачу:
Имеется таблица предприятий и таблица документов движения.
В таблице документов движения имеются 2 поля "Предприятие поставщик" и "Предприятие получатель". Оба этих поля - значение ключевого поля таблицы предприятий.
Нужно получить результирующую таблицу документов, с названиями обеих предприятий.
ЮЮ (2007-03-30 09:41:00) [8]Приведи реальный текст запроса
O.O (2007-03-30 09:37:00) [9]Ругается, не даёт присоединить одну и ту-же таблицу по одному и тому-же полю 2 раза
ЮЮ (2007-03-30 08:54:00) [10]Использовать алиасы:
SELECT bt.*, ref1.Name Ref1Name, ref2.Name Ref2Name
FROM
BadTable bt
LEFT JOIN ReferenceTable ref1ON bt.RefField1 = ref1.Id
LEFT JOIN ReferenceTable ref2ON bt.RefField2 = ref2.Id
>SELECT T1.Field1, T1.Field2, T2.Field2 from T1
>Join T2 T2_1 on T1.Field2 = T2.Field1
>Join T2 T2_X on T1.Field_X = T2.Field1
В подчеркнуьых местах использовать алиасы.
З.Ы. Таблицы следует называть так, чтобы их имена не путались с сокращениями, применяемыми для имен алиасов :)
Sergey13 (2007-03-30 08:44:00) [11]> А если в первой таблице не одно поле номером записи из таблицы
> Т2 а несколько из одной и той-же таблицы, как сделать запрос,
> чтоб видеть в одной строке результирующего набора расшифровку
> этих разных полей?
Сделать несколько связей в запросе к одной и той же таблице, но по разным полям
SELECT T1.Field1, T1.Field2, T2.Field2 from T1
Join T2 T2_1 on T1.Field2 = T2.Field1
Join T2 T2_X on T1.Field_X = T2.Field1