Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как составить запрос [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


Наверх

Титульная страница Поиск, карта сайта Написать письмо