Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dwa zapytania w jednym - left join.
Forum PHP.pl > Forum > Bazy danych > MySQL
XDocTorX
Mam dwa zapytania, postanowilem je połączyć aby sprawdzić czy będzie to wydajne jednak mam problem z utworzeniem tego zapytania.

pierwsze :
  1. SELECT sum(ilosc) FROM stat;

drugie :
  1. SELECT sum(ilosc) AS a, FROM stat WHERE DATA > SUBDATE( NOW( ) , INTERVAL 31 DAY );


i tutaj niepoprawne zapytanie :
  1. SELECT sum( lewo.ilosc )
  2. FROM stat AS lewo
  3. LEFT JOIN stat AS prawo ON prawo.ilosc
  4. WHERE (prawo.DATA > SUBDATE( NOW( ) , INTERVAL 31
  5. DAY ));
skowron-line
NIe jestem expertem z SQL ale wydaje mi sie ze UNION powinienieś użyć.
nospor
musze juz spadac wiec na szybko ci podpowiem:
left join tu jest zbedny. robisz jednego "from" i w select dajesz obie sumy, z tym że tę drugą warunkujesz (if) warunkami ktore miales w where (te z where usun).

Jak nie skumales i do wieczora nic nie napiszesz to jak wpadne wieczorkiem na forum to moze dam ci odpowiedź. pomysl jednak sam.
XDocTorX
Dzięki, masz racje ja to napisalem tak:

  1. SELECT sum(ilosc), sum( IF(DATA > SUBDATE( NOW( ) , INTERVAL 31 DAY ), ilosc ,0) ) FROM stat;


struktura tabeli wygląda tak :
  1. CREATE TABLE `stat` (
  2. `id` int(255) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `ip` char(15) collate utf8_bin NOT NULL,
  4. `data` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  5. `ilosc` int(255) UNSIGNED NOT NULL,
  6. `pgstart` varchar(255) collate utf8_bin NOT NULL,
  7. `skad` varchar(2550) collate utf8_bin NOT NULL,
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM AUTO_INCREMENT=2876 DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=2876 ;

Ma ponad 5 tyś rekordów.

Hmm i wszystko sie zgadza jednak czy jest to optymalne rozwiazanie ? czy lepiej juz dać dwa zapytania ?.
A może jakoś inaczej to rozwiązać ?

Pozdrawiam.
nospor
zrobiles to dokladnie tak jak myslalem smile.gif

Cytat
czy jest to optymalne rozwiazanie ? czy lepiej juz dać dwa zapytania ?.
Nie, dwa zapytania nie będą szybsze od tego.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.