Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zliczanie ilości samochodów
Forum PHP.pl > Forum > Bazy danych > MySQL
espeen
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
kszychu
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).
espeen
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
kszychu
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.
spenalzo
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.
NoiseMc
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ć.
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.