Cytat
Nie rozumiesz mnie czemu np jeśli to
To ty mnie nie zrozumiales, dzialanie jest jak najbardziej prawidlowe i prawidlowe dostales wyniki. Dziwie sie ze jeszcze bledu nie znalazles, jak zwykle klania sie teoria.
Jesli masz max(id) gdzie nie ma rekordow zwraca NULL
Jesli masz jakies rekordy zwroci Ci makysmalna wartosc
W zapytaniu uzyles wilu tabel, lecz nie masz relacji w nich, czyli baza danych wykorzystuje niejawne polaczenie miedzy nimi, wtedy dostajesz to co napisales.
Przyklad:
tab1
id nazwa
1 ffff
2 ddd
3 dddd
SELECT MAX(id)
FROM tab1
wynik: 3
tab2:
id nazwa
--- brak rekordow
SELECT MAX(id)
FROM tab2
wynik: NULL
teraz robimy to co ty napisales
SELECT MAX(tab1.id), MAX(tab2.id)
FROM tab1,
tab2
wynik: NULL NULL
Zmieniamy tabele tab2:
tab2
id nazwa id_tab1
Jesli zlaczymy to warunkami:
SELECT MAX(tab1.id), MAX(tab2.id)
FROM tab1
LEFT JOIN tab2 ON tab1.id = tab2.id_tab1
wynik:
3 NULL
Teraz dodajmy kolejne rekordy do tabeli2
tab2:
id nazwa id_tab1
1 dsfsdf 1
2 sdfasd NULL
3 sdfsd 2222 - przy ralacji nie przejdzie uzylem zeby Ci to zobrazowac
SELECT MAX(tab1.id), MAX(tab2.id)
FROM tab1
LEFT JOIN tab2 ON tab1.id = tab2.id_tab1
wynik:
3 1
Mam nadzieje ze zrozumiales.