Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.15;
Скачать: CL | DM;

Вниз

Помогите правельно написать SQL запрос   Найти похожие ветки 

 
Ivanoff   (2008-07-14 18:45) [0]

Имею

Master: Tbl_1: Fld_A, Id_t2, Fld_1, Fld_2, ... Fld_8
Detail  : Tbl_2: Id_t2, Fld_A, Fld_1

Справочник - Tbl_3: IdFld, Fld_A

Fld_1 .. Fld_8 из обоих таблиц беруться из справочника

Пример:
Tbl_1
Fld_A |Fld_1| ... | Fld_8
 abc  |  1  |  1  |  2  
 aaa   |  1
 aax   |  3  |  1

Tbl_2
Fld_A |Fld_1
  A   | 1
  B   | 2
  C   | 3

должен получть:
Tbl_1.Fld_A|Tbl_2.Fld_A
   abc    |    A
   abc    |    A
   abc    |    B
   aaa    |    A
   aax    |    C
   aax    |    A

SELECT *
FROM Tbl_1 LEFT JOIN Tbl_2 ON Tbl_1.Id_t2 = Tbl_2.Id_t2
WHERE Tbl_2.Fld_1 = Tbl_1.Fld_1
 OR Tbl_2.Fld_1 = Tbl_1.Fld_2
 ...
 OR Tbl_2.Fld_1 = Tbl_1.Fld_8

кручусь вокруг да около пока вроде бы не выходит: если к примеру Tbl_2.Fld_1 повторяется 2 раза (v Tbl_1.Fld_1 i v Tbl_1.Fld_2) то я полукю в итоге толко один раз а надо оба


 
Ivanoff   (2008-07-14 20:42) [1]

Нашел один выход:

SELECT T1.*, T2.*
FROM T1 INNER JOIN T2 ON T1.F1 = T2.F1

UNION ALL

SELECT T1.*, T2.*
FROM T1 INNER JOIN T2 ON T1.F2 = T2.F1

UNION ALL

...

UNION ALL

SELECT T1.*, T2.*
FROM T1 INNER JOIN T2 ON T1.F8 = T2.F1


но както через "задний проход" хотябы потому что сам SELECT у меня несколько серьёзней (выборка из нескольких таблиц в 2-х разных БД) не хоцца его плодить 8 раз ...


 
Johnmen ©   (2008-07-14 21:23) [2]

FROM Tbl_1
 LEFT JOIN Tbl_2 ON Tbl_1.Id_t2 = Tbl_2.Id_t2
 LEFT JOIN Tbl_2 ON Tbl_1.Fld_2 = Tbl_2.Fld_1
 ...
 LEFT JOIN Tbl_2 ON Tbl_1.Fld_8 = Tbl_2.Fld_1



Страницы: 1 вся ветка

Текущий архив: 2009.03.15;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
15-1232060933
Григорий
2009-01-16 02:08
2009.03.15
Вопрос: Передача данных приложению


2-1233085240
AkimOS
2009-01-27 22:40
2009.03.15
Файл


2-1233060048
peroon
2009-01-27 15:40
2009.03.15
Перебор типа OleVariant


4-1206449330
Thrasher
2008-03-25 15:48
2009.03.15
Печать


15-1231829478
Эля
2009-01-13 09:51
2009.03.15
Ошибка памяти