|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 365
|
Chi sa fare questa query?
Ciao a tutti,
avrei un quesito da porvi: sto realizzando a tempo perso una piccola applicazione che si interfaccia ad un database mysql riguardante i miei films.. tra gli aspetti del programma c'è una pagina in cui vengono visualizzate varie statistiche, quali il numero di films, l'attore di cui possiedo più films, ed altre amenità simili) il problema è questo: desideravo fare una query che mi ritornasse il regista preferito.. questo deve essere ottenuto estraendo tra tutti i registi quello che ha il maggior numero di film con valutazione uguale a 5 (il massimo) vi riporto un piccolo schema riassuntivo delle tabelle che servono per la query, premettendo che non avevo intenzione di utilizzare le viste.. film(id,regista*,....,voto)regista fk per la tabella registi registi(id ,nome,cognome) se mi sono scordato di qualche informazione fatemi sapere |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2001
Città: milano, qualunque birreria
Messaggi: 4208
|
se ho capito bene...
select regista, max(count(voto)) from film where voto=5 group by regista in oracle funziona, penso anche in mysql... poi per la tabella regista fai una normale join...
__________________
Save water: drink beer.
This message has been created with 100% recycled electrons Un rutto vale più di mille parole. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 365
|
scusa se rispondo ora..
grazie per l'attenzione, purtroppo l'avevo già provata ma mysql non mi lascia annidare funzioni di raggruppamento, quindi max(count(xxxx)) non lo posso fare |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 3852
|
Quote:
__________________
Cerco fotocamera con buono zoom!! CLICCA! ° Moderatore del Forum Ufficiale di ElaborarE (responsabile sezione HI-FI e Car Audio) ° |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 365
|
ho la 5..
proprio le sottoquery intendevo usare, ma non mi viene in mente una query decente
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 3852
|
A quest'ora non sono molto in forma e mi sa che c'è una soluzione più semplice! Comunque puoi creare una tabella temporanea di due colonne in cui visualizzi per ogni regista il numero di film con voto 5 stelle. Poi da questa tabella di appoggio estrai il massimo della colonna count, e fai il select di regista per quella tupla.
__________________
Cerco fotocamera con buono zoom!! CLICCA! ° Moderatore del Forum Ufficiale di ElaborarE (responsabile sezione HI-FI e Car Audio) ° |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 365
|
che era l'idea che mi era venuta per fare la vista con la tabella intermedia che dicevi tu..
ma ora voglio provare a creare questa dannata tabella al volo provando una sottoselect, altrimenti mi rassegnerò a creare una vista
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 365
|
ok me ne sono fatto una ragione.. ho creato una vista ed ho fatto la select sul massimo numero di cinque stelle linkando la tabella a quella dei registi..la soluzione indubbiamente più indolore..ora funziona a meraviglia..grazie a tutti
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Aug 2001
Città: milano, qualunque birreria
Messaggi: 4208
|
senza creare temporanei, ma con identico principio...
volendo potevi fare una query con la sintassi with, che mi sembra che la versione 5 di mysql accetti... esempio: Codice:
with valutazione as ( select regista, count(voto) voto from film where voto=5 group by regista), regista as ( select id, nome, cognome from registi) select all regista, nome, cognome, max(voto) from regista, valutazione where regista=id è una funzione nativa del db2, poi adottata da oracle e se non ho letto male anche da mysql nelle ultime versioni ciao
__________________
Save water: drink beer.
This message has been created with 100% recycled electrons Un rutto vale più di mille parole. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 365
|
tra poco provo e ti so dire..grazie mille per la dritta del with intanto, che non conscevo affatto..
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Aug 2001
Città: milano, qualunque birreria
Messaggi: 4208
|
Quote:
__________________
Save water: drink beer.
This message has been created with 100% recycled electrons Un rutto vale più di mille parole. |
|
|
|
|
|
|
#12 |
|
Messaggi: n/a
|
Interessante approfondirò anch'io questa cosa del WITH.
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Aug 2001
Città: milano, qualunque birreria
Messaggi: 4208
|
Quote:
__________________
Save water: drink beer.
This message has been created with 100% recycled electrons Un rutto vale più di mille parole. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:21.


















