Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> MySQL query <- DUCHY !!!!
czezz
post 25.11.2003, 19:02:52
Post #1





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 24.07.2003

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
uboottd
post 25.11.2003, 22:21:22
Post #2





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

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


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
Go to the top of the page
+Quote Post
adwol
post 25.11.2003, 22:27:41
Post #3





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

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


Wywal group by powinno być wtedy tyle samo.
Go to the top of the page
+Quote Post
czezz
post 26.11.2003, 09:22:35
Post #4





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 24.07.2003

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
janek
post 26.11.2003, 11:13:41
Post #5





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 31.01.2003
Skąd: piękne, czyste, pachnące Katowice

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


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.


--------------------
janek
Go to the top of the page
+Quote Post
czezz
post 26.11.2003, 12:08:24
Post #6





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 24.07.2003

Ostrzeżenie: (10%)
X----


same shit sad.gif
Go to the top of the page
+Quote Post
adwol
post 26.11.2003, 13:26:03
Post #7





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

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


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.
Go to the top of the page
+Quote Post
czezz
post 26.11.2003, 16:23:27
Post #8





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 24.07.2003

Ostrzeżenie: (10%)
X----


coz...jest dokladnie tak jak mowisz... w glowie mi sie gotuje...
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 Wersja Lo-Fi Aktualny czas: 13.07.2025 - 14:08