Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> SELECT MAX...., z kilku tabeli
Nazin
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 10.09.2005
Skąd: Kraków

Ostrzeżenie: (0%)
-----


  1. SELECT
  2. MAX(a.pole) AS pole1,
  3. MAX(e.pole) AS pole2,
  4. MAX(f.pole) AS pole3,
  5. MAX(g.pole) AS pole4,
  6. MAX(u.pole) AS pole5,
  7. MAX(m.pole) AS pole6,
  8. MAX(d.pole) AS pole7,
  9. MAX(o.pole) AS pole8,
  10. MAX(p.pole) AS pole9,
  11. MAX(t.pole) AS pole10,
  12. MAX(v.pole) AS pole11
  13.  
  14. FROM tabela1
  15. a,
  16. tabela2 e,
  17. tabela3 f,
  18. tabela4 g,
  19. tabela5 u,
  20. tabela6 m,
  21. tabela7 d,
  22. tabela8 o,
  23. tabela9 p,
  24. tabela10 t,
  25. tabela11 v

Mam takie zapytanie, i wszystko ładnie działa, jeśli w każdej tabeli w danym polu są jakieś wartości, jeśli zaś są puste to zwraca same NULLe... Dlaczego?
Proszę o pomoc.

Ten post edytował Nazin 4.02.2006, 16:38:49


--------------------
Game Exe :: Gothic, Morrowind, Oblivion, Neverwinter Nights, Diablo, Baldur's Gate, Elder Scrolls, cRPG, Fantasy, Dungeons&Dragons, Forgotten Realms...
Go to the top of the page
+Quote Post
SongoQ
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


A co bys chcial zeby Ci zwracalo, napis "nie ma rekordow"?


--------------------
Go to the top of the page
+Quote Post
Nazin
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 10.09.2005
Skąd: Kraków

Ostrzeżenie: (0%)
-----


LOL blink.gif

Nie rozumiesz mnie czemu np jeśli to

  1. SELECT
  2. MAX(a.pole) AS pole1
  3. FROM tabela1
  4. a


zwróci mi 10
a to:

  1. SELECT
  2. MAX(e.pole) AS pole2
  3. FROM tabela2
  4. e

zwróci mi 0

to dlaczego jak dam:

  1. SELECT
  2. MAX(a.pole) AS pole1,
  3. MAX(e.pole) AS pole2
  4. FROM tabela1
  5. a,
  6. tabela2 e


to są zwracane dwa NULLe zamiast 10 i 0 ?


--------------------
Game Exe :: Gothic, Morrowind, Oblivion, Neverwinter Nights, Diablo, Baldur's Gate, Elder Scrolls, cRPG, Fantasy, Dungeons&Dragons, Forgotten Realms...
Go to the top of the page
+Quote Post
AxZx
post
Post #4





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

Ostrzeżenie: (0%)
-----


to moze uzyj IF

  1. SELECT IF(max(pole1) != NULL, max(pole1), 0) AS max_pole1
  2. FROM tabela


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
SongoQ
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


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

  1. SELECT MAX(id)
  2. FROM tab1

wynik: 3

tab2:
id nazwa
--- brak rekordow
  1. SELECT MAX(id)
  2. FROM tab2

wynik: NULL

teraz robimy to co ty napisales
  1. SELECT MAX(tab1.id), MAX(tab2.id)
  2. FROM tab1,
  3. tab2

wynik: NULL NULL

Zmieniamy tabele tab2:
tab2
id nazwa id_tab1

Jesli zlaczymy to warunkami:
  1. SELECT MAX(tab1.id), MAX(tab2.id)
  2. FROM tab1
  3. 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
  1. SELECT MAX(tab1.id), MAX(tab2.id)
  2. FROM tab1
  3. LEFT JOIN tab2 ON tab1.id = tab2.id_tab1

wynik:
3 1

Mam nadzieje ze zrozumiales.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 15:44