Справочник Спр0 - владелец справочников Спр1, Спр2 и Спр3.
Надо "сплясав" от справочника Спр1 ("подтянув" к нему владельца - это в принципе лирика но на всякий случай привожу ситуацию полностью) выдрать из справочников Спр2 и Спр3 элементы того же владельца и с кодами, совпадающими с кодами Спр1 (если они есть) или пустоту (если таких элементов нету). Т.е., используя последовательно LEFT JOIN ("при котором все записи из первой (левой) таблицы включаются в динамический набор, даже если во второй (правой) таблице нет соответствующих им записей.") хочу получить набор записей:
- Эл1
по всем элементам справочника Спр1- Эл2
по найденным элементам справочника Спр2 / пусто
по не(!)найденным элементам справочника Спр2 - Эл3
по найденным элементам справочника Спр3 / пусто
по не(!)найденным элементам справочника Спр3 Тупо пытаюсь выдрать последовательными LEFT JOIN.
1.Вот это:
|SELECT
| Спр0.id [Эл0 :Справочник.<Спр0вид>], Спр0.code as Спр0код, Спр0.Рекв as Спр0рекв, Спр1.id [Эл1 :Справочник.<Спр1вид>]
| , Спр2.id [Эл2: Справочник.<Спр2вид>]
| , Спр3.id [Эл2: Справочник.<Спр3вид>]
|FROM [Справочник.<Спр1вид>] as Спр1 LEFT JOIN [Справочник.<Спр0вид>] as Спр0 ON Спр0.id = Спр1.parentext
| LEFT JOIN [Справочник.<Спр2вид>] as Спр2 ON Спр2.parentext = Спр0.id AND Спр2.code = Спр1.code
| LEFT JOIN [Справочник.<Спр3вид>] as Спр3 ON Спр3.parentext = Спр0.id AND Спр3.code = Спр1.code
|WHERE Спр0.ismark <> '*'
| AND Спр1.ismark <> '*'
| AND Спр2.ismark <> '*'
| AND Спр3.ismark <> '*'
| AND Спр0.Рекв < 3
=== выдает записи только строго с найденными (одновременно!) элементами Спр2 и Спр3. При этом в справочнике Спр3 меньше кодов чем с Спр2 (и Спр1 если это важно!), но строк с найденными элементами Спр1 и Спр2 но с ненайденными Спр3 - нету.
Что я делаю не так и как сделать так?
ЗЫ: и не бейте ногами, да, я ламер в t-sql, я в курсе что мануалы надо ковырять - я ковырял но не помогло.