Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MySQL query <- DUCHY !!!!
Forum PHP.pl > Forum > Bazy danych > MySQL
czezz
nie wiem jak to mozliwe, ale prosze przyjzyjcie sie temu przypadkowi:

takie zapytanie:
[sql:1:3963c6815c]
"SELECT tel1, sum(impuls), data, operator FROM bil WHERE io = 7 AND ( operator = 501 OR operator = 505 OR operator = 509) AND data = 110703 group by tel1 ";
[/sql:1:3963c6815c]
wywala 1158 wierszy. I ok.

ale jesli zrobie 3 zapytania w których pojedynczo wymienie 3 rozne kryteria z kolumny "operator" to ich suma da liczbe 1230 <- wiecej niz wynik z zapytania, ktore przedstawilem!!!

Malo sie znam i operowalem zazwyczaj przy ORACL'u, ale nie potrafie dojsc dlaczeg wyniki mi sie nie zgadzaja questionmark.gif

plz hlp.

wedlog mnie.. to sa duchy 8O
uboottd
a mozesz dokladnie zacytowac te trzy zapytania ? bo na pierwsza mysl ze gdzies masz literowke / cos podobnego

nie powtarza cie sie tam czasem tel1 ktore group by laczy wtedy w jeden wiersz ? smile.gif
adwol
Wywal group by powinno być wtedy tyle samo.
czezz
hej, dzieki za zainteresowanie sie moim tematem.

do uboottd:

zapytanie 1
[sql:1:aafb2826c4]
"SELECT tel1, sum(impuls), data, operatOR
FROM bil
WHERE io = 7 AND operator = 501 AND data = 110703
GROUP BY tel1 ";
[/sql:1:aafb2826c4]

wynik 739 wierszy

[sql:1:aafb2826c4]
"SELECT tel1, sum(impuls), data, operatOR
FROM bil
WHERE io = 7 AND operator = 505 AND data = 110703
GROUP BY tel1 ";
[/sql:1:aafb2826c4]

wynik 451 wierszy

[sql:1:aafb2826c4]
"SELECT tel1, sum(impuls), data, operatOR
FROM bil
WHERE io = 7 AND operator = 509 AND data = 110703
GROUP BY tel1 ";
[/sql:1:aafb2826c4]

wynik 40 wierszy

co w sumie daje 1230.

i w sumie wyniki tych 3 zapytan powinny dac wynik taki sam jak to zapytanie:

[sql:1:aafb2826c4]
"SELECT tel1, sum(impuls), data, operatOR
FROM bil
WHERE io = 7 AND (operator = 501 OR operator = 505 OR operator = 509) AND data = 110703 GROUP BY tel1 ";
[/sql:1:aafb2826c4]

wynik 1158 wierszy
..ale nie daje. sad.gif

do adwol:
nie moge usunac GROUP BY, bo uzywam funkcji SUM(). Bez GROUP BY niezadziala sad.gif

Nie mowie, ze sie znam, ale wedlug mnie potrzebni sa pogromcy duchow, bo to jest jakis absurd
janek
Nie mam pojęcia czemu to Ci nie działa, ale spróbuj tak:

[sql:1:82eaef8a5f]
"SELECT tel1, sum(impuls), data, operatOR
FROM bil
WHERE io = 7 AND operatOR in(501, 505, 509) AND data = 110703
GROUP BY tel1 ";
[/sql:1:82eaef8a5f]

i zobacz co zwróci. Poza tym IN jest wydajniejsze, bo w przeciwieństwie do OR wykorzystuje indeksy.
czezz
same shit sad.gif
adwol
Cytat
nie moge usunac GROUP BY, bo uzywam funkcji SUM(). Bez GROUP BY niezadziala sad.gif

Nie mówie żebyś usunął to produkcyjnie tylko usunął na chwile i zobaczył wynik. To nie są żadne duchy, tylko akurat masz takie dane, że dostajesz taki efekt. Jest to całkiem normalne.

Sprawdź czy nie masz kilku wierszy, które mają tę samą wartość pola tel1 i różne wartości pola operator, bo wydaje mi się, że masz. Wtedy GROUP BY w oddzielnych zapytaniach będzie wielokrotnie zliczało tą samą grupę co da zawyżony wynik, a w jednym sklei wszystkie te wiersze w jeden.

Niezależnie od tego czy dopuszczasz taką sytuację z punktu widzenia formalnego, technicznie jest to możliwe.
czezz
coz...jest dokladnie tak jak mowisz... w glowie mi sie gotuje...
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.