Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> sumowanie rekordow z kilku tabel
wojto
post 11.02.2004, 17:00:37
Post #1





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Warszawa

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


Przypuscmy, ze mam 4 tabele:
designy,banery,logotypy i skrypty, wszystkie o strukturze:
id (int);nazwa(varchar)
i jak skonstruowac zapytanie, aby pobrac laczna liczbe wszystkich rekordow w tych tabelach?
probowalem tak:
[sql:1:08b56213c2]SELECT COUNT(d.*) AS d_ile,COUNT(b.*) AS b_ile,COUNT(l.*) AS l_ile,COUNT(s.*) AS s_ile FROM designy d,banery b,logotypy l,skrypty s[/sql:1:08b56213c2]
ale nie wiem dlaczego to niedziala.
Chcialbym pobrac ta sume za jednym zapytaniem, moze sie da odrazu cos wykombinowac z SUM, nie chcialbym korzystac z UNION

moze to juz bylo na forum, ale nie moglem znalezc :/


--------------------
Go to the top of the page
+Quote Post
spenalzo
post 11.02.2004, 18:10:00
Post #2





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


[sql:1:048760970d]SELECT COUNT(d.*) AS d_ile,COUNT(b.*) AS b_ile,COUNT(l.*) AS l_ile,COUNT(s.*) AS s_ile FROM designy d,banery b,logotypy l,skrypty s GROUP BY d.id, b.id, s.id, l.id[/sql:1:048760970d]
Oczywiście nazwij te pola tak jak są w bazie.


--------------------

Go to the top of the page
+Quote Post
wojto
post 11.02.2004, 19:48:51
Post #3





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Warszawa

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


Niestety, ale dalej nie dziala, nie wiem, co jest zle, wyswietla taki blad:
Kod
You have an error in your SQL syntax near '*) AS d_ile,COUNT(b.*) AS b_ile,COUNT(l.*) AS l_ile,COUNT(s.*) AS s_ile FROM w' at line 1


--------------------
Go to the top of the page
+Quote Post
spenalzo
post 11.02.2004, 20:23:28
Post #4





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


[sql:1:208786ece3]SELECT COUNT(d.id) AS d_ile,COUNT(b.id) AS b_ile,COUNT(l.id) AS l_ile,COUNT(s.id) AS s_ile FROM designy d,banery b,logotypy l,skrypty s [/sql:1:208786ece3]
:?:


--------------------

Go to the top of the page
+Quote Post
wojto
post 11.02.2004, 21:25:44
Post #5





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Warszawa

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


hmmm... ciagle zly wynik sad.gif
ale dziwne, ze jak dam kod:
[sql:1:620087174e]SELECT COUNT(d.id) AS d_ile FROM designy d[/sql:1:620087174e]
to poprawnie wyswietla ilosc rekordow: 17
zas jak dam kod:
[sql:1:620087174e]SELECT COUNT(d.id) AS d_ile,COUNT(b.id) AS b_ile FROM designy d,banery b[/sql:1:620087174e]to wyswietla 102 102
natomiast przy tym calym kodzie wyswietla wynik 1020 1020 1020 1020

nie wiem jaki jest blad w tym zapytaniu, ktos ma jakis pomysl?


--------------------
Go to the top of the page
+Quote Post
uboottd
post 13.02.2004, 11:35:37
Post #6





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

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


Cytat
zas jak dam kod:
[sql:1:b83e7d9987]SELECT COUNT(d.id) AS d_ile,COUNT(b.id) AS b_ile FROM designy d,banery b[/sql:1:b83e7d9987]to wyswietla 102 102
natomiast przy tym calym kodzie wyswietla wynik 1020 1020 1020 1020
nie wiem jaki jest blad w tym zapytaniu, ktos ma jakis pomysl?


Wynik jest poprawny w sensie zgodnosci ze sztuka: Przy tak skonstruowanym zapytaniu zwraca ci ile wystepuje wierszy w sklejeniu kartezjanskim tych tabel, czy 102 = ilosc wierszy w pierwszej tabeli * ilosc wierszy w drugiej.
Mozesz sprobowac dac COUNT(distintct d.id) i wtedy powinienes dostac prawidlowy wynik, jednakze chyba na kazdej bazie danych poslanie 4 zapytan o te tabele bedzie zdecydowanie szybsze od takiego grzyba.
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: 24.06.2025 - 05:49