2011-12-18 31 views
7

voglio mostrare nel mio cruscotto top 5 del prodotto, su ogni prodotto che voglio mostrare il totale di ordine, di vista e la percentuale di cui il prodotto si basa su altri ex:mysql query complicata questione

Game 1 for Xbox (200 orders/1000 views) 20% 
Game 2 for WII (180 orders/2100 views) 18% 
Game 3 for PS3 (170 orders/390 views) 17% 
Game 4 for PS3 (90 orders/1400 views) 9% 
Game 5 for WII (20 orders/30 views) 2% 

quindi 200 ordini per gioco 1 su 1000 ordini è il 20% degli ordini totali. il che significa, il 20% dei miei prodotti erano di gioco 1

ecco la mia domanda:

select 
products.name, products.type, products.views, count(*) as orders, ???????? 
from 
products 
inner join orders on (products.id = orders.product_id) 
group by orders.product_id 

Come faccio ad avere la percentuale?

+1

Non capisco quella parte: "visualizzazioni e la percentuale di dove quel prodotto è basato sugli altri". Puoi essere più preciso? Cosa sono le "opinioni"? Cosa sono queste cose "basate sugli altri"? – fge

+0

sicuro aggiornerò la mia domanda – fred

risposta

6
select 
products.name, products.type, count(*) as orders, count(*) * 100/total.total as pct 
from 
products 
inner join orders on (products.id = orders.product_id) 
inner join (select count(*) as total from orders) total 
group by orders.product_id 
+0

grazie funziona – fred

+0

buono a sentire che :) – necromancer