|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
|
[SQL] query annidata con max
Salve a tutti sto cercando di creare una query sql da sottoporre a mysql.
In pratica ho una tabella con tre colonne: user_id, item_id, preference, la chiave è la coppia (user_id, item_id). Dalla tabella prendo tutti gli user_id distinti con item_id diverso da un valore X, prendo tutti gli user_id distinti, della stessa tabella, che hanno item_id=Y e che sono inclusi nella query precedente. Ora tra questi user_id vorrei aver tornare indietro quelli che hanno il valore massimo nel campo preference. La prima parte della query l'ho scritta in questo modo: Codice:
select distinct user_id from taste.taste_preferences_20k t where item_id=334 and user_id in (SELECT distinct user_id FROM taste.taste_preferences_20k t where item_id!=20) L'utente o gli utenti che hanno dato il punteggio più alto (il numero nella colonna preference) all'item 334 (contenuto in item_id) ma che non hanno mai utilizzato l'item 20 (quindi non hanno item_id=20). Con quel pezzo di queri ottengo tutti gli utenti che hanno item_id=334 e non item_id=20 ora però sorgono tutti i problemi. Io ho provato a scrivere la query integralmente in questo modo: Codice:
select user_id, item_id, max(preference)from taste.taste_preferences_20k t where user_id in ( select distinct user_id from taste.taste_preferences_20k t where item_id=334 and user_id in (SELECT distinct user_id FROM taste.taste_preferences_20k t where item_id!=20) ) and item_id=334 group by user_id; Codice:
102 334 2 13 334 1 140 334 2 173 334 4 177 334 3 181 334 1 214 334 3 260 334 5 3 334 3 49 334 4 69 334 3 7 334 5 94 334 3 Codice:
260 334 5 7 334 5 Come devo modificare la mia query? Grazie a tutti. Ciao ciao. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Ciao.
Potresti spiegarci cosa avresti voluto fare, invece di cosa hai fatto? Ovvero, di cosa hai bisogno?
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:53.



















