Count dve tabele po kljucu iz trece...
Ceo dan se lomim oko ovoga, presao sam ceo net uzduz i popreko i nista korisno nisam nasao.
Dakle, imam 4 tabele: grupa(id, naziv) delatnost(id, grupa_id, naziv) placeni_oglas(id, i 10 nebitnih kolona) besplatni_oglas(id, i 5 nebitnih kolona) Zelim da izlistam sve delatnosti u odredjenoj grupi i za svaku delatnost zbir placenih i besplatnih oglasa. Na primer: Usluge (8) Prodaja (10) Po inerciji sam probao ovaj sql upit, i vratio mi je pogresni total, cini mi se duplirani. Kôd:
SELECT d.*, COUNT(po.id)+COUNT(bo.id) as total Jel imate mozda neki predlog kako ovo da resim? Pozdrav! |
Možda ovako:
Kôd:
Select grupa_id, Delatnost_ID, DelatnostNaziv, Count(*) From |
Hvala na odgovoru, u pitanju je MySQL baza.
Probao sam taj upit, izmenjen za mysql, ne radi... :( |
Ne radi kako? Sintaksno ne radi?
Ako te ne mrzi, okači tabele (strukturu) pa da ja probam lokalno. |
Izvinjavam se sto kasnim par dana za odgovorom. Da, sintaksno, koliko mi se cini mySQL bas i ne voli te ugnjezdene upite, mada iskreno, nikad ih nisam koristio...
Evo su tabele i podaci: Kôd:
-- |
Evo preko pogleda (sad probao na MySQL 5.0.45):
Prvo pogled: Kôd:
CREATE VIEW Oglasi AS Kôd:
SELECT `GrupaID`, `Delatnost_ID`, `DelatnostNaziv`, Count(*) |
Verovatno si mislio WHERE bo.delatnost_id = del.id pri kreiranju view-a...
Mana je sto ne prikazuje sve delatnosti, nego samo one u kojima ima oglasa. No, resicu to sa ovim upitom: Kôd:
SELECT d.grupa_id, d.id, d.naziv, COUNT(o.oglas_id) Hvala na pomoci :) |
Citat:
Citat:
Citat:
|
I na kraju, na serveru se nalazi mysql 4, a view tu ne radi :1027:
|
Ništa, onda mora teška artiljerija:
- Kreiraš tabelu koja ima strukturu kao pogled: `GrupaID`, `Delatnost_ID`, `BrojOglasaPlacenih`, `BrojOglasaNeplacenih` - Kreiraš Trigger-e nad tabelama besplatni_oglas, placeni_oglas, delatnost koji će: Placeni / Neplaceni (za delatnost_id): 1. Na insert da uvećaju odgovarajuće polje iz sloga gornje tabele 2. Na delete da smanje odgovarajuće polje iz sloga gornje tabele 3. Na update da smanje odgovarajuće polje iz sloga gornje tabele za staru vrednost sloga a da uvećaju odgovarajuće polje za novu vrednost sloga Delatnost: 1. Na insert da dodaju slog gornjoj tabeli 2. Na delete da ga obrišu Ovo ti je najčistije rešenje za agregatnu tabelu; jedino moraš da se pobrineš da kreneš od "prazne" baze, bez slogova u te tri tabele, da bi trigeri mogli sve to lepo da popune. |
Citat:
Citat:
|
Da li podržava Stored Procedure?
Ovo se sve može prebaciti i Stored Procedure, i da se ona koristi kao centralna tačka za izmenu podataka. Ako ne podržava, odustajem :) |
@salebab: Probaj ovaj upit i javi mi da li radi:
Kôd:
select g.naziv as "Grupa", d.naziv as "Delatnost", count(distinct b.id) + count( distinct p.id) as "Ukupno" |
O da, radi, to je to :)
Vas dvoje ste bas profi, divim vam se :) Thx :) |
Primam donacije u obliku piva i cevapa. ;)
|
Preko paypal? :)
|
@bluesman: Psst, jos nisam dobio DPT majice...
Sto se tice PayPala - jos nikad nisam obavio neku transakciju preko tog servisa, pa cu tako i cevape i pivo konzumirati uzivo jednom prilikom, kad me put nanese u Srbiju. :D Ili ako mungos organizuje neko okupljanje u BL. :D |
Vreme je GMT +2. Trenutno vreme je 04:41. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.