Raphael Brick

Raphael Brick Vince in bono
malum...

Temat: problem z konstrukcją select'a

Witam

Mam problem tego typu :

Dwie tabele w pierwszej pola id i kategoria.
W drugiej kilka pól dowolnych oraz 5 pół br1,br2,br3,br4,br5 w których występują różne id z pierwszej bazy.

Jak zapytaniem pokazać wszystkie kategorie z pierwszej bazy i ilości wystąpień w drugiej.

Dla jednego pola np. br1 robię tak i działa :

select `tab1`.kategoria as kategoria, count(tab2.br1) as ile
from `tab1` left join tab2 on (tab2.br1 = tab1.id
group by 1

Czy idzie i jak zrobić aby jednym zapytaniem objąć pozostałe pola brX i dostać wspólny wynik w polu ile ?

pozdrawiam
Andrzej J.

Andrzej J. Tier 3 Manager at
Good Technology

Temat: problem z konstrukcją select'a

Spróbuj UNION ALL i później sum(ile)..

konto usunięte

Temat: problem z konstrukcją select'a

Hej,
Troche za malo napisales o tym jak wyglada reszta bazy/aplikacji, wiec moja sugestia moze nie miec sensu...
czy struktura drugiej tabeli jest narzucona? Czy mozesz ja zmienic?

Ja bym rozbil druga tabele na dwie:
w pierwszej Key + "pola dowolne" (nazwijmy ja DRUGA_A)
w drugiej foreign key z "DRUGA_A" + kolumna brx + id z"pierwszej" tabeli (DRUGA_B: create table KEY,BRX,FOREIGN_ID)

wtedy wybranie ilosci id sprowadzaloby sie do
select count from "DRUGA_B" where FOREIGN_ID = "jakies_tam_id_z_pierwszej_tabeli"

Poza tym, w razie gdyby br1-br5 okazalo sie "zbyt krotkie", to moje rozwiazanie wydaje sie bardziej elastyczne.
Irek Słonina

Irek Słonina programowanie, bazy
danych i linuksy

Temat: problem z konstrukcją select'a

Rafał Cegiełka:
Dla jednego pola np. br1 robię tak i działa :

select `tab1`.kategoria as kategoria, count(tab2.br1) as ile
from `tab1` left join tab2 on (tab2.br1 = tab1.id
group by 1

Czy idzie i jak zrobić aby jednym zapytaniem objąć pozostałe pola brX i dostać wspólny wynik w polu ile ?

pozdrawiam

powinno zadziałać...

select
`tab1`.kategoria as kategoria,
count(t2br1.br1)+count(t2br2.br2)+count(t2br3.br3) as ile
from `tab1`
left join tab2 t2br1 on (t2br1.br1 = tab1.id)
left join tab2 t2br2 on (t2br2.br2 = tab1.id)
left join tab2 t2br3 on (t2br3.br3 = tab1.id)
group by
1
Raphael Brick

Raphael Brick Vince in bono
malum...

Temat: problem z konstrukcją select'a

Irek Słonina:
Rafał Cegiełka:
Dla jednego pola np. br1 robię tak i działa :

select `tab1`.kategoria as kategoria, count(tab2.br1) as ile
from `tab1` left join tab2 on (tab2.br1 = tab1.id
group by 1

Czy idzie i jak zrobić aby jednym zapytaniem objąć pozostałe pola brX i dostać wspólny wynik w polu ile ?

pozdrawiam

powinno zadziałać...

select
`tab1`.kategoria as kategoria,
count(t2br1.br1)+count(t2br2.br2)+count(t2br3.br3) as ile
from `tab1`
left join tab2 t2br1 on (t2br1.br1 = tab1.id)
left join tab2 t2br2 on (t2br2.br2 = tab1.id)
left join tab2 t2br3 on (t2br3.br3 = tab1.id)
group by
1

mało tego że powinno, to działa !!! :) dzięki piękne, pozdrawiam

Następna dyskusja:

Problem z zapytaniem SELECT...




Wyślij zaproszenie do