Započni novu temu Odgovori na temu  [ 10 Posta ] 
Autoru Poruka
 Tema posta: Pomoc oko upita
PostPoslato: 17.01.2008. 16:01:30 
Korisnikov avatar

Pridružio se: 23.12.2003. 18:28:09
Postovi: 239
Lokacija: home sweet home
Godina: Padobranac
Smer: IS
okusacu ukratko da objasnim format baze. Naime, iz extracta, iz jednog drugog sistema mora se uraditi brojanje po odredjenim kriterijumima.
Svaki customer ima svoj ID, npr.:
AAA-1
AAA-2
AAA-3
AAB-1
itd.
Imamo tip customera, neka bude TIP1, TIP2, TIP3, itd.
Imamo dva product-a vezana za customer-e. Svaki product je za svakog customer-a ocenjen ocenama A, B ili C i to nije konstantno.
Situacija sledeca:
AAA-1; TIP1; PRODUCT1; A
AAA-1; TIP1; PRODUCT2; B
AAA-2; TIP3; PRODUCT2; A
AAA-2; TIP3; PRODUCT1, C
AAA-3, TIP1; PRODUCT1, B
AAA-3, TIP1; PRODUCT2, C
itd, itd
Tabela ima oko 10 000 redova
Svaki customer ima samo jednu kombinaciju!
E sad, potrebno je uraditi sledece:
- za svaku kombinaciju Product - Ocena
- za svaki tip
koji je broj customer-a!
Postoje customeri koji imaju samo jedan product i njih je potrebno izdovojiti po tipu i oceni
Dakle, recimo, koliko ima customera koji su TIP1 i imaju kombinaciju PRODUCT1; A, PRODUCT2; B (i tako za svaki tip i kombinaciju).
Nadam se da sam dovoljno dobro objasnio, i sam sam se sludeo :(
Svaka pomoc je dobro dosla!
THNX

_________________
"Of all the gin joints, in all the towns, in all the world, she had to walk into mine"
Ne postoje glupa pitanja, postoje samo glupi ljudi

Slika


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 17.01.2008. 17:05:04 
Moderator
Korisnikov avatar

Pridružio se: 11.11.2004. 14:34:28
Postovi: 8655
Godina: Apsolvent
Smer: IS
'Ajde da malo pojasnimo...
Trazi se brojanje?

Citiraj:
E sad, potrebno je uraditi sledece:
- za svaku kombinaciju Product - Ocena
- za svaki tip
koji je broj customer-a!


Hoces upit za svaki produkt da izvuces broj ocena?
I hoces za svaki tip broj customera?

ako je to to, onda ovako nesto:

Kod:
SELECT product, count('ocena')
FROM tabela
GROUP BY product


i

Kod:
SELECT tip, count('customer')
FROM tabela
GROUP BY tip


Nadam se da je to to...
Malo si konfuzan :)
Ako ne, pojansi malo problem..

Recimo, ovo me buni:
Citiraj:
Svaki customer ima samo jednu kombinaciju!

Sta ti znaci to 'kombinacija'? Nije zapis, posto vidim u primeru da ti se ponavljaju customeri po dva puta...

_________________
Tommorow is cancelled due to lack of interest!
...
O, da mi je da se još jednom zaljubim,
Opet bih uzeo kostim Večnog dečaka,
I opet bih smislio kako da prodangubim
Dok ona ne sleti niz hodnik Studenjaka...


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 17.01.2008. 17:24:03 
Korisnikov avatar

Pridružio se: 23.12.2003. 18:28:09
Postovi: 239
Lokacija: home sweet home
Godina: Padobranac
Smer: IS
Da pojasnim
svaki customer ima jednu kombinaciju koja izgleda ovako:
PROD1 A
PROD2 B

PROD1 A
PROD2 C

PROD1 B
PROD2 C

itd.

E sad, npr. treba mi broj customer-a koji su TIP1 i koji imaju kombinaciju PROD1 A, PROD2 B

za svaku od tih kombinacija mi treba broj po tipu customer-a.

Dodatni zez je to sto postoje customer-i kojima je dodeljen samo JEDAN product i ocena pa je njih potrebno dodatno izdvojiti ali po tipu, product-u i oceni.
Npr, koliko customer-a koji su TIP1 ima PRODUCT1 ocene A

Uffff, valjda sam malkiiice jasniji :D

_________________
"Of all the gin joints, in all the towns, in all the world, she had to walk into mine"
Ne postoje glupa pitanja, postoje samo glupi ljudi

Slika


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 17.01.2008. 18:57:27 
Moderator
Korisnikov avatar

Pridružio se: 11.11.2004. 14:34:28
Postovi: 8655
Godina: Apsolvent
Smer: IS
Auh... ovi proizvodi su malo nesrecno isprojektovani...
Iz tvoje price zakljucujem da su oni konstantni... Onda je bolje da uz svakog customera imas samo polje prva_ocena i druga-ocena....

Probaj da napravis view koji ce imati sledecu strukturu:
[cutomer] [tip] [ocena prvog proizvoda] [ocena drugog proizvoda]

to bi nesto moglo preko self join-a da se odradi...

pa nad tim izvrsi upit

Kod:
SELECT type, prva_ocena, druga_ocena, count('customer')
FROM ime_view-a
GROUP BY type, prva_ocena, druga_ocena

_________________
Tommorow is cancelled due to lack of interest!
...
O, da mi je da se još jednom zaljubim,
Opet bih uzeo kostim Večnog dečaka,
I opet bih smislio kako da prodangubim
Dok ona ne sleti niz hodnik Studenjaka...


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 17.01.2008. 23:53:13 
Korisnikov avatar

Pridružio se: 23.12.2003. 18:28:09
Postovi: 239
Lokacija: home sweet home
Godina: Padobranac
Smer: IS
ali potrebni su mi i proizvodi :(

jedno od resenja:

Prvi upit trazi customere kojima je dodeljen PRODUCT1 sa ocenom a, b ili c
Drugi trazi customere kojima je dodeljen PRODUCT2 sa ocenom a, b ili c
Uvek imam jednu kombinaciju
Treci upit trazi ID koji se ponavlja u obe tabele
Dakle, to je ID koji odgovara kombinaciji koju smo zadali
count mi prebrojava ID po tipu

pravi se spisak ID-a koji su se u nekoj od kombinaciji pojavljivali dva puta
taj spisak se oduzima od maticnog i dobijamo spisak ljudi kojima je dodeljen samo jedan Product

mozda postoji laksi nacin da se ovo izvede :udri:

_________________
"Of all the gin joints, in all the towns, in all the world, she had to walk into mine"
Ne postoje glupa pitanja, postoje samo glupi ljudi

Slika


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 18.01.2008. 01:47:47 
Moderator
Korisnikov avatar

Pridružio se: 11.11.2004. 14:34:28
Postovi: 8655
Godina: Apsolvent
Smer: IS
pa onda samo u view dodaj kolone [naziv prvog proizvoda] i [naziv drugog proizvoda]... pa i njih pozivaj u ovom shirem upitu...

_________________
Tommorow is cancelled due to lack of interest!
...
O, da mi je da se još jednom zaljubim,
Opet bih uzeo kostim Večnog dečaka,
I opet bih smislio kako da prodangubim
Dok ona ne sleti niz hodnik Studenjaka...


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 18.01.2008. 09:06:40 
Korisnikov avatar

Pridružio se: 23.12.2003. 18:28:09
Postovi: 239
Lokacija: home sweet home
Godina: Padobranac
Smer: IS
Ali koliko kapiram, tu se ne radi vezivanje jedne kombinacije product1 ocena, product2 ocena za jedan ID, a upravo to mi je potrebno...
Ili gresim!?

_________________
"Of all the gin joints, in all the towns, in all the world, she had to walk into mine"
Ne postoje glupa pitanja, postoje samo glupi ljudi

Slika


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 18.01.2008. 10:32:45 
Moderator
Korisnikov avatar

Pridružio se: 11.11.2004. 14:34:28
Postovi: 8655
Godina: Apsolvent
Smer: IS
pazi
moguce je odraditi nesto u ovom fazonu:

Kod:
SELECT t1.customer as customer, t1.type as type, t1.product AS prvi_prod, t2.product AS drugi_prod, t1.ocena AS prva_ocena, t2.ocena AS druga_ocena
FROM tabela t1 LEFT JOIN tabela t2
ON (t1.customer=t2.customer) && (t1.product!=t2.product)


Ovo vraca nesto vrlo slicno onome sto tebi treba...
samo sto ce ti customeri koji imaju oba proizvoda biti duplirani.. tj. imaces ovako nesto:

cust1; prod1; A; prod2; C;
cust1; prod2; C; prod1; A;

ne znam, poigraj se sa ovim upitom sto sam ti poslao... pa od njega napravi view...

_________________
Tommorow is cancelled due to lack of interest!
...
O, da mi je da se još jednom zaljubim,
Opet bih uzeo kostim Večnog dečaka,
I opet bih smislio kako da prodangubim
Dok ona ne sleti niz hodnik Studenjaka...


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 18.01.2008. 11:11:00 
Korisnikov avatar

Pridružio se: 23.12.2003. 18:28:09
Postovi: 239
Lokacija: home sweet home
Godina: Padobranac
Smer: IS
Tako nesto mi i treba!!
Hvala!!

_________________
"Of all the gin joints, in all the towns, in all the world, she had to walk into mine"
Ne postoje glupa pitanja, postoje samo glupi ljudi

Slika


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
 Tema posta:
PostPoslato: 18.01.2008. 11:13:00 
Korisnikov avatar

Pridružio se: 15.04.2002. 20:41:32
Postovi: 2915
Lokacija: Beograd
Godina: Dipl.
Smer: IS
mighty_lemon je napisao:
ali potrebni su mi i proizvodi :(

jedno od resenja:

Prvi upit trazi customere kojima je dodeljen PRODUCT1 sa ocenom a, b ili c
Drugi trazi customere kojima je dodeljen PRODUCT2 sa ocenom a, b ili c
Uvek imam jednu kombinaciju
Treci upit trazi ID koji se ponavlja u obe tabele
Dakle, to je ID koji odgovara kombinaciji koju smo zadali

Ovo bi trebalo da radi isto to:

Kod:
select  * from Customer C
where
     exists ( select 1 from Customer c1 where C.CustomerID = c1.CustomerID and c1.ProductID=PRODUCT1)
     and exists ( select 1 from Customer c2 where C.CustomerID = c2.CustomerID and c2.ProductID=PRODUCT2)

mighty_lemon je napisao:
count mi prebrojava ID po tipu

pravi se spisak ID-a koji su se u nekoj od kombinaciji pojavljivali dva puta

:zbun:
Valjda samo grupishesh po tipu na ovaj skup?!?

mighty_lemon je napisao:
taj spisak se oduzima od maticnog i dobijamo spisak ljudi kojima je dodeljen samo jedan Product

A ti hocesh spisak ljudi kojima je dodeljen samo jedan product?
Moze ovako:
Kod:
select  * from Customer C
where
     (exists ( select 1 from Customer c1 where C.CustomerID = c1.CustomerID and c1.ProductID=PRODUCT1)
     and not exists ( select 1 from Customer c2 where C.CustomerID = c2.CustomerID and c2.ProductID=PRODUCT2) )
or
 (not exists ( select 1 from Customer c1 where C.CustomerID = c1.CustomerID and c1.ProductID=PRODUCT1)
     and exists ( select 1 from Customer c2 where C.CustomerID = c2.CustomerID and c2.ProductID=PRODUCT2) )


ili pametnije
Kod:
select  c2.* from
(select  CustomerID,count(*) as countCustomer from Customer group by CustomerID) c1
left join
(select  CustomerID,ProductID,count(*) as countProduct from Customer group by CustomerID,ProductID) c2
on (c1.CustomerID=c2.CustomerID)
where (c1.countCustomer=c2.countProduct)

_________________
Bolje da ispadnesh glup, nego da ispadnesh iz voza!


Share on FacebookShare on TwitterShare on Google+
Vrh
 Profil  
Odgovori sa citatom  
Prikaži postove u poslednjih:  Poređaj po  
Započni novu temu Odgovori na temu  [ 10 Posta ] 


Ko je OnLine

Korisnici koji su trenutno na forumu: Nema registrovanih korisnika i 5 gostiju


Ne možete postavljati nove teme u ovom forumu
Ne možete odgovarati na teme u ovom forumu
Ne možete monjati vaše postove u ovom forumu
Ne možete brisati vaše postove u ovom forumu
Ne možete slati prikačene fajlove u ovom forumu

Pronađi:
Idi na:  
cron
Copyleft FONForum 2001-2014 | Powered by phpBB © phpBB Group