Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zliczanie ilości samochodów
espeen
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 5.01.2006
Skąd: Kraków

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


Witam.
Mam kilka tabel, między innymi tablele: ciezarowe,dostawcze itd ogólnie różne rodzaje samochodów. W każej tabeli jest takie pole jak wojewodztwo w którym znajduje się liczba od 1-16 (bo chyba tyle jest województw).

A moje pytanei to jak w jednym zapytani zliczyć ile mam samochodów z danego wojewodztwa??

Ponieważ próbuję coś z countem ale strasznie mi to marnie idzie.
Jeżeli ktoś ma pomysł z góry dziękuję za podpowiedź.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
kszychu
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Skopałeś trochę strukturę tej bazy. Trzeba było dać jednątabelę samochody a w niej dać kolumnę, oznaczającą rodzaj (osobowe, ciężarowe, etc).


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
espeen
post
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 5.01.2006
Skąd: Kraków

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


To powiedz mi czy miałoby sens trzymanie wszystkiego w jednej bazie, ponieważ to są ogłoszenia samochodów, wiec np ciezarowe maja 30 opcji innych niz osobowe ktre mają 40 opcji, te z kolei mają inne opcje niż jachty bo też znajdują się takie.

Czyli uważasz że powinienem zrobić jedną tabele która będzie miałą około 300 kolumn?questionmark.gif
Moim zdaniem to niezbyt mądre.

Tak czy tak nie odbiegajmy od tematu, czyli jak zliczyć ile mam samochodó z jednoego regionu?questionmark.gif
Go to the top of the page
+Quote Post
kszychu
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Powiem Ci jak ja bym to zrobił i już kończę OT.
Zrobiłbym tabelę z polami ....., typ, opcja1, opcja2, ......, opcjan, jakas_data, .......
Dla osobówek opcja1 to liczba drzwi, dla ciężarówek - ładowność, dla jachtów - wyporność. O tym, czy jest to cieżrówka, osobówka, jacht czy rower - tandem decydowało by pole typ.
Teraz tylko w zależności od typ wystarczy wyświetlić sobie odpowiednio dane z poszczegolnych pól.

Ale do rzeczy. W Twoim przypadku pozostaje liczenie w poszczególnych tabelach osobno i zsumowanie po stronie php.
Albo drugi sposób: użycie tabeli tymczasowej. Nie chce mi się o niej szukać informacji, więc sam poszukaj sobie w manualu.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
spenalzo
post
Post #5





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

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


Cytat(espeen @ 2006-03-22 16:10:59)
A moje pytanei to jak w jednym zapytani zliczyć ile mam samochodów z danego wojewodztwa??

  1. SELECT COUNT(*) AS osobowe_ilosc
  2. FROM osobowe
  3. WHERE wojewodztwo=13
  4. UNION
  5. SELECT COUNT(*) AS dostawcze_ilosc
  6. FROM dostawcze
  7. WHERE wojewodztwo=13


lub

  1. SELECT (COUNT(DISTINCT d.id)+COUNT(DISTINCT o.id)) AS ilosc
  2. FROM dostawcze
  3. d, osobowe o WHERE d.wojewodztwo=o.wojewodztwo AND d.wojewodztwo=13

aczkolwiek to drugie nie jest zbyt wydajne tongue.gif
Edit: a, nie jest tak źle, to po prostu mój serwer www sie tak ślimaczy winksmiley.jpg - czas ok. 0,15 sek na 1200 rekordach w jednej i 11000 rekordach w drugiej tabeli.

Ten post edytował spenalzo 22.03.2006, 17:52:04


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

Go to the top of the page
+Quote Post
NoiseMc
post
Post #6





Grupa: Zarejestrowani
Postów: 398
Pomógł: 10
Dołączył: 24.11.2004
Skąd: Łódź

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


Cytat
Czyli uważasz że powinienem zrobić jedną tabele która będzie miałą około 300 kolumn?questionmark.gif


Wystarczy że zrobisz tabelę, która będzie miała 300 wierszy i połączysz ją relacją wiele do wielu z tabelą samochody w ten sposób:



Potem zliczasz liczbę samochodów w nast. sposób:
  1. SELECT COUNT(*)
  2. FROM Samochody
  3. WHERE IDWojewodztwa = 3;

a jeżeli chcesz zliczyć samochody jednego rodzaju:
  1. SELECT COUNT(*)
  2. FROM Samochody
  3. s INNER JOIN Rodzaje r ON s.IDRodzaj = r.IDRodzaj WHERE Rodzaj='ciężarowe' AND s.IDWojewodztwa = 3


Zalecam zmianę struktury bazy, jak będziesz chciał dodać np. samochód terenowy to będziesz musiał tworzyć nową tabelę, natomiast jak będziesz chciał dodać elektryczne szyby do ciężarówki to znowu będziesz musiał nową kolumnę dodawać.

Ten post edytował NoiseMc 23.03.2006, 00:02:04


--------------------
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 Aktualny czas: 21.08.2025 - 05:58