Re: Возможно ли такое?
- From
- Vladimir Ilyashenko (2:5080/1003)
- To
- Vlad Filippov
- Date
- 2006-07-17T23:39Z
- Area
- SU.DBMS.SQL
From: "Vladimir Ilyashenko" <fido7@front.ru>
Reply-To: "Vladimir Ilyashenko" <fido7@front.ru>
Здравствуй, Vlad !
"_16_" _июля_ 2006 г. Vlad написал в <fido7.su.dbms.sql> на тему:
*"Возможно ли такое?"*
VI>> SELECT Tab1.Index, IIF(IsMissing(Tab2.Factor_Index),NULL,Factor_Value)
VI>> FROM Tab1 LEFT JOIN Tab2 ON Tab2.Factor_Index = Tab1.Index
VI>> WHERE Tab2.Factor_Index = b OR Tab2.Factor_Index IS NULL
VI>> не включает в pезультат стpоки Tab1.Index с отсутствующими
VI>> Tab2.Factor_Index =b
VI>> И куда я только не включал и "IIF()", и "IS NULL", и "IsEmpty", и
VI>> "IsMissing" - все одно, не хочет он меня понять:(
VF> Попpобуй так:
VF> LEFT JOIN Tab2 ON (Tab2.Factor_Index = Tab1.Index AND
VF> (Tab2.Factor_Index = b OR Tab2.Factor_Index IS NULL))
Большое спасибо! Выбирает все, как надо, с отличной скоростью, и, что важно,
метод весьма для меня полезный! А то я частенько с этими NULL мучаюсь:)
Но даже в голову не приходило перенести условие (Tab2.Factor_Index = b OR
Tab2.Factor_Index IS NULL) в FROM. Да и сейчас, боюсь, понял метод весьма
поверхностно:( Можно ли раскрыть приблизительно так: произвести объединение
и выбрать даже при отсутствии Tab2.Factor_Index или когда соответствует 'b'
? Но тогда почему это не работало при наличии этого же условия в WHERE -
потому что превратилось из условия выборки в условие объединения?
Всего тебе наилучшего, Vlad!
_ Владимир. _
/VERBA VOLANT, SCRIPTA MANENT/ <слова улетают, написанное остается>
--- ifmail v.2.15dev5
* Origin: Private (2:5080/1003@fidonet)
SEEN-BY: 46/50 50/12 203 278/169 450/186 1024 451/30 452/25 154 454/9 2432/260
SEEN-BY: 4614/20 4615/21 5000/5000 5001/100 5001 5010/2 53 5011/13 5012/23 30
SEEN-BY: 5012/46 5015/28 5019/31 5020/175 400 545 715 758 760 830 1042 1523
SEEN-BY: 5020/1604 1641 2238 4441 5021/3 29 5022/128 5025/3 750 5026/10 45
SEEN-BY: 5027/12 5028/61 5029/32 60 5030/115 556 731 966 1063 1080 1339 1900
SEEN-BY: 5031/50 5035/38 5040/47 5041/4 5042/13 21 5045/7 5047/47 5049/19 164
SEEN-BY: 5054/1 8 9 28 35 37 45 50 63 67 5055/95 5058/999 5059/9 5062/1
SEEN-BY: 5070/156 5071/22 5077/70 5078/20 5080/68 147 239 1003 5082/6 5083/21
SEEN-BY: 5084/32 5085/13 87 5090/106 5093/4 5095/20 5096/18 5097/64 5099/133
SEEN-BY: 6028/1 6055/2 6083/12
PATH: 5080/1003 5020/4441 545 5054/1 37