![]() |
![]() ![]() |
![]() |
![]()
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 :/ -------------------- |
|
|
![]()
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. -------------------- |
|
|
![]()
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
-------------------- |
|
|
![]()
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]
:?: -------------------- |
|
|
![]()
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
![]() 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? -------------------- |
|
|
![]()
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. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.06.2025 - 05:49 |