Ovo je vise DB pitanje nego Pascal/Delphi :)
ali ipak, za da spojis dve tabele na nacin koji trazis mozes uraditi 4 tipa na join-a:
ako imamo dve tabele
Code:
Table A:
id data
----------------
1 bla1
2 bla2
3 bla3
4 bla4
Table B:
id data
----------------
2 bval2
3 bval3
6 bval6
I sada zelimo da spojimo sve slogove koje ima u obe tabele. To e to sto ustvari ti si uradila ... uradimo INNER JOIN
SELECT a.id, b.data FROM a INNER JOIN b ON a.id = b.id
Code:
rezultat:
id data
----------------
2 bval2
3 bval3
Ako zelimo da spojimo desnu tabelu sa levom i u rezultatu dobiti polja iz desne tabele koje nemaju svoje parove u levu tabelu onda treba nam right join
SELECT a.id, b.data FROM a RIGHT JOIN b ON a.id = b.id
Code:
rezultat:
id data
----------------
1 <NULL>
2 bval2
3 bval3
4 <NULL>
Ako zelimo obratno, da iz leve tabele dobijemo ceo recordset ukljucujuci i nespojene slogove iz desne tabele, normalno nam treba left join
SELECT a.id, b.data FROM a LEFT JOIN b ON a.id = b.id
Code:
rezultat:
id data
----------------
2 bval2
3 bval3
<NULL> bval6
jos imas FULL OUTER join koji ukljucuje sva polja iz obe tabele
SELECT a.id, b.data FROM a FULL OUTER JOIN b ON a.id = b.id
Code:
rezultat:
id data
----------------
1 <NULL>
2 bval2
3 bval3
4 <NULL>
<NULL> bval6
Ima jos nekoliko permutacija na temu join-a koji se zovu LEFT OUTER, RIGHT OUTER, ali u principu LEFT JOIN je isto sto i RIGHT OUTER JOIN samo je redosled u kome se ukljucuju tabele razlican.