Форум: "Базы";
Текущий архив: 2009.03.15;
Скачать: [xml.tar.bz2];
ВнизПомогите правельно написать 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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.08 c