Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 10 odgovora
  • 4.209 pregleda

Najnovija ↓

Select iz 3 tabele sa vise COUNT-A 13.12.2006. u 18:26 · pre 242 meseca #1
Primjer:

TABELA alfa:
Code:

alfa_id int
alfa_name varchar(20)
alfa_nijebitno varchar(150)


TABELA beta:
Code:

alfa_id int
beta_id int
beta_nijebitno varchar(150)


TABELA gama
Code:

alfa_id int
gama_id int
gama_nijebitno varchar(150)



Rezultat koji treba da dobijem izgleda otprilike ovako
Code:

+---------+-----------+---------------+----------------+
| alfa_id | alfa_name | ukupno_beta   | ukupno_gama    |
+---------+-----------+---------------+----------------+
| 1       | red       | 10            | 23             | 
| 2       | blue      | 12            | 24             | 
+---------+-----------+---------------+----------------+


Znaci neki podaci iz tabele alfa i broj slogova iz ostalih tabela za dati alfa_id.
Meni na pamet ne pada ni jedan jedini elegantan nacin, a vjerujm da neko pametan to mozda zna.
Potpis
tu nema kašike....
Re: Select iz 3 tabele sa vise COUNT-A 13.12.2006. u 22:25 · pre 242 meseca #2
Code:
select sub1.alfa_id, sub1.alfa_name, sub1.ukupno_beta, sub2.ukupno_gama
from
(select a.alfa_id, a.alfa_name, count(*) ukupno_beta
from alfa a
left join beta b on b.alfa_id = a.alfa_id
group by a.alfa_id) as sub1,
(select a.alfa_id, a.alfa_name, count(*) as ukupno_gama
from alfa a
left join gama g on g.alfa_id = a.alfa_id
group by a.alfa_id) as sub2
where sub1.alfa_id = sub2.alfa_id
order by sub1.alfa_id;


ili
Code:
select a.alfa_id, a.alfa_name, sub1.ukupno_beta, sub2.ukupno_gama
from alfa a, (select b.alfa_id, count(*) ukupno_beta from beta b group by b.alfa_id) as sub1,
(select g.alfa_id, count(*) ukupno_gama from gama g group by g.alfa_id) as sub2
where a.alfa_id = sub1.alfa_id and a.alfa_id = sub2.alfa_id;

Vjerovatno postoji i elegantnije rjesenje, ali mi se ne da dublje ulaziti u rjesavanje upita...
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Re: Select iz 3 tabele sa vise COUNT-A 14.12.2006. u 08:48 · pre 242 meseca #3
Suvise komplikovano, predlazem da problem resis jednom petljom, ili malo preuredis tabele ovako ce ti svaka promena i provera biti kopalje po SQL upitima
Potpis
Na posao sam uvek stizao sa mučninom ali živ. Što pokazuje da mi je Šuman bliži od Šostakoviča!
Re: Select iz 3 tabele sa vise COUNT-A 14.12.2006. u 09:37 · pre 242 meseca #4
@voligoya: Cime bi mogao argumentovati tu izjavu da je bolje odraditi to u petlji (vjerovatno mislis u nekom programskom jeziku?) ? Evo, ja sam se spreman kladiti, da ce ovaj SQL upit biti brzi nego da se to odradjuje u petlji.
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Re: Select iz 3 tabele sa vise COUNT-A 14.12.2006. u 11:17 · pre 242 meseca #5

Citat:
Dejan Topalovic: @voligoya: Cime bi mogao argumentovati tu izjavu da je bolje odraditi to u petlji (vjerovatno mislis u nekom programskom jeziku?) ? Evo, ja sam se spreman kladiti, da ce ovaj SQL upit biti brzi nego da se to odradjuje u petlji.


Da mislio sam u nekom programskom jeziku, uopste ne znam ni o kojoj se bazi radi, ali pogledaj molim te upit koji se odnosi na tri proste tabele, sta ako treba da sumira i u isto vreme izvuce neki minimum iz tih tabela, opet da lomim glavu sa SQL, ne hvala. A sto se tice brzine upita, spoji ti tri tabele sa kolicinom zapisa preko 100000, tada glasam za tri upita nad po jednom tabelom.
Potpis
Na posao sam uvek stizao sa mučninom ali živ. Što pokazuje da mi je Šuman bliži od Šostakoviča!
Re: Select iz 3 tabele sa vise COUNT-A 14.12.2006. u 11:29 · pre 242 meseca #6
Evo ponavljam - spreman sam se kladiti s tobom na bilo koju sumu, da ce SQL biti brzi od izracunavanja putem programskog jezika.
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Re: Select iz 3 tabele sa vise COUNT-A 14.12.2006. u 16:17 · pre 242 meseca #7
Baza podataka je mySQL5 a programski jezik je PHP.

Inace kod treba da bude u aplikaciji na koju se ocekuje ogroman napad :) korisnika. Kada bi PHPu dao da mi odradi 20 puta (izraz ce uglavnom vracati 20 slogova) i onda u svakom jos po jedan SQL izaraz apache bi tak poludio da bi sam prepravio svoj kod u nekku 3D pucacinu a mySQL bi se iz servera presteko u UPS :)

I ovako je pitanje kako ce mySQL reagovati na ovako slozen upit. U svakom slucaju Dejane veliko hvala.
Potpis
tu nema kašike....
Re: Select iz 3 tabele sa vise COUNT-A 14.12.2006. u 16:18 · pre 242 meseca #8
@dr Zidoo: Javi da li upit radi. :)
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Re: Select iz 3 tabele sa vise COUNT-A 15.12.2006. u 15:37 · pre 242 meseca #9
Upit radi, ali tako zgazi mySQL da je to ne vidjeno. Na kraju sam moro counte staviti u prvu tabelu pa sada sve sto radim na ovim tabelama (brisem, dodajem) moram uslkadjivati sa glavnom :)

U svakom slucaju, poucno i definitivno ce zatrebati jos koji put.
Potpis
tu nema kašike....
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme