1

Temat: pobranie danych z 3 tabel, COUNT(), GROUP BY, JOIN?

Żeby zatem ogarnąć ten powstały chaos myślowy zmieniam poprzednią treść tego tematu.
Mam 3 tabele o zawartości m.in. tu podanej:
t1              t2                            t3
t1_ipt |      t2_ipt | t2_ipp |         t3_ipp | t3_ipo
-------     +-------+-------        +-------+----------
     1 |              1 |     1  |                  1 | 2
        |              1 |     2  |                  2 | 3
        |              1 |     3  |                  1 | 1
     2 |              2 |     4  |                  3 | 6
        |              2 |     5  |                  3 | 4
     3 |              3 |     6  |                  4 | 5
primary key              Pr.k.                       Pr.k.

Dla bardziej plastycznego wyobrażenia problemu posłużę się misiami.
Są 3 misie w tabeli t1 o nr 1,2,3
Co jakiś czas misie wychodzą na spacer i dane o tym są w t2 a mianowicie:
nr misia i nr SERIAL kolejnego spaceru.
Na spacerze miś okrąża drzewo, a dane o okrążeniu są w t3 a mianowicie:
nr spaceru i nr SERIAL okrążenia.
Miś na spacerze nie musi zrobić okrążenia ale też może ich zrobić kilka.

t1 z t2 są połączone za pomocą nr misia ale t2 z t3 za pomocą nr spaceru.

Chcę zrobić takie SELECT aby otrzymać w odpowiedzi kolumnę z :
nr misia  | ilość jego spacerów  |  ilość jego wszystkich okrążeń
   1              3                                5
   2              2                                1
   3              1                                0 

Dziękuję ;)

Ostatnio edytowany przez r_k2 (2010-04-19 18:58:25)

2

Odp: pobranie danych z 3 tabel, COUNT(), GROUP BY, JOIN?

Niezy opis smile, to jeszcze powiedz jak miaby wygladac wynik.

3

Odp: pobranie danych z 3 tabel, COUNT(), GROUP BY, JOIN?

Widzę że forum żywe i żwawe, proszę, oto odpowiednie zapytanie:

SELECT misie.id AS id_misia, count(DISTINCT spacery.id) AS ilosc_spacerow, count(DISTINCT okrazenia.id) AS ilosc_okrazen
FROM misie, spacery, okrazenia
WHERE spacery.id_misia = misie.id AND okrazenia.id_spaceru = spacery.id GROUP BY misie.id;