Մեջբերում Ներսես_AM-ի խոսքերից Նայել գրառումը
էս հարցումդ նույնն ա ինչ
Կոդ:
Select * From Table1
Left Join Table2 on (Table1.ID=Table2.TABLE1ID)
սովորական join-ի դեպքում այն տողերը որոնք երկրորդ աղյուսակում չկան չեն վերադարձվում,
Բացի դա հարցումդ շատ անգամ կարագանա, եթե Table2.TABLE1ID-ի վրա ինդեքս դնես:
չէ նույնը չի,
left outer join-ի դեպքում ձախից միացնում ա, բոլոր տողերը, անկախ նրանից, կան թե չկան:
Օրինակ
T1.ID T1.TEXT T2.ID T2.T1ID T2.TEXT
1 a 1 1 aa
1 a 2 1 ab
2 b
3 c 3 3 ca
3 c 4 3 cb
4 d

սովորական Join-ի (INNER JOIN) ստացվում է հետևյալը`

T1.ID T1.TEXT T2.ID T2.T1ID T2.TEXT
1 a 1 1 aa
1 a 2 1 ab
3 c 3 3 ca
3 c 4 3 cb

Ինդեքսները դրված են բոլոր բանալի հանդիսացող սյուների, ինչպես նաև "ծնող" բանալի սյուների վրա

Oracl-ում կա սենց տարբերակ`
Select * From Table1
Left Join Table2 on (Table1.ID EXPECT Table2.TABLE1ID)
Եթե չեմ սխալվում (սինտաքսիսը չեմ վերանայել, արագ գրեցի, վաղուց Oracl-ով չեմ զբաղվում),
նույնը արդեն կա նաև SQL Server 2008-ում,
Բայց Firebird/Interbase-ում չկա
Կարելի է գրել նաև այսպես`
Select * From Table1
Where Table1.ID NOT IN (SELECT Table2TABLE1ID From Table2)

Սակայն հարցման կատարման պլանի կառուցման և հարցման կատարման մաթեմատիկական և պրոցեսորային հաշվարկների տեսանկյունից նույնն է տալիս
հարցը այն է, որ վերադարձվեն այն տողերը, որոնք 2-ՐԴ ԱՂՅՈՒՍԱԿՈՒՄ ՉԿԱՆ` ենթատող չունեն:
T1.ID T1.TEXT T2.ID T2.T1ID T2.TEXT
2 b
4 d