query parzialmente funzionante

rino63

Nuovo Utente
7 Apr 2015
6
0
0
Carissimi,

Nel mio Db MySQL ho una tabella contenente brani musicali, tra i cui vari campi (titolo, autore, album, ecc...) esistono anche quello "punteggio" (int) e "caricato_il" (date).
Sto cercando di estrarre il brano che ha ottenuto il punteggio più alto tra quelli inseriti in una determinata settimana, e ho scritto la seguente query:

SELECT * FROM `brani`
WHERE `punteggio` = (SELECT MAX(punteggio)
FROM `brani` WHERE
`caricato_il` BETWEEN '2015-05-18' AND '2015-05-24')

Ovviamente la query dovrebbe restituire i dati relativi ad un unico brano (non esistono al momento parità di punteggi tra brani inseriti la stessa settimana...)

Il fatto strano è questo: inserendo alcuni intervalli di date mi compare più di una riga: Mysql inserisce brani inseriti IN ALTRE SETTIMANE, ma che hanno LO STESSO PUNTEGGIO del brano vincitore; è come se in questo caso non considerasse il campo `caricato_il`.
N.B.
Ovviamente non mi compaiono messaggi d'errore.

Ringrazio chiunque voglia chiarirmi le idee.
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
hai scritto 2 select,

la prima estrae tutti i record che hanno punteggio uguale a .... (tanti record indipendenti dal periodo)
la seconda estrae il massimo punteggio di un periodo

il periodo lo devi applicare anche alla prima select
ciao
Marino
 

rino63

Nuovo Utente
7 Apr 2015
6
0
0
query parzialmente funzionante bis

Salve Marino,
Ti ringrazio molto per l'aiuto, in effetti il tuo ragionamento è sensato.
Interpretando il tuo consiglio ho provato a riscrivere la query:

SELECT * FROM `brani` WHERE `caricato_il` BETWEEN '2015-05-18' AND '2015-05-24'
AND `punteggio` = (SELECT MAX(punteggio))

Però la query mi restituisce TUTTI i BRANI caricati in quel periodo di tempo.

Ho anche provato a fare una subquery "sequenziale" cioè:

SELECT * FROM `brani`
WHERE `caricato_il` BETWEEN '2015-05-18' AND '2015-05-24' ORDER BY `punteggio` AS `classifica`;
SELECT * FROM `classifica` WHERE `classifica`.`punteggio` = SELECT MAX(punteggio)

Ma mi dà un'errore di sintassi non specificato.
Nonostante ripetuti sforzi, continuo a non capire dove sta l'errore. In teoria mi sembrava una query semplice, invece...
In ogni caso grazie dell'interessamento.
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
PHP:
SELECT * FROM brani
WHERE caricato_il BETWEEN '2015-05-18' AND '2015-05-24'
AND punteggio = (SELECT MAX(punteggio) FROM brani WHERE caricato_il BETWEEN '2015-05-18' AND '2015-05-24')

oppure
PHP:
SELECT * FROM brani
WHERE caricato_il BETWEEN '2015-05-18' AND '2015-05-24'
ORDER BY punteggio DESC
LIMIT 1

ciao
Marino
 
Ultima modifica:

rino63

Nuovo Utente
7 Apr 2015
6
0
0
funzionaaa!

:mavieni:
Grazie mille Marino, se potessi ti offrirei pizza e birra!
Col senno di poi (come sempre) era semplice...

Un Saluto
Mauro
 
Discussioni simili
Autore Titolo Forum Risposte Data
max75 query su due tabelle e dati doppioni MS Access 2
E Aiuto per query PHP 8
E Query differenza tra tabelle MySQL 5
E Query Alias PHP 4
T Query con date MS Access 1
K Inserimento query Errore 1366 PHP 4
L Query e selezione DB con $_POST PHP 2
M query update e delete PHP 0
A media degli elementi estratti da una query MySQL 0
S Passare query o utm alla pagina successiva Domini 1
O problema con query PHP 4
M Query PHP 8
R query DELETE non cancella i record PHP 1
G Query con i giorni della settimana MySQL 10
E Query annidate o cicli MySQL 1
C bottone query MySQL 0
T Query su due tabelle con totali Database 4
G AVVISO QUERY IN ESECUZIONE PHP 1
M Riportare in tabella HTML dati estratti con query SQL MySQL 0
S Selezionare ultimo record di una sotto query MySQL 27
G Menù a tendina di ricerca con query PHP 1
V Query per una somma PHP 2
F stampare a video i risultati della query PHP 1
L problema con query select PHP 2
D Query sum Database 1
M Visualizzazione a video risultati query php PHP 0
A form PHP prenotazione tramite query PHP 2
R Problema query con ricerca id numerico PHP 2
G Casella combinata in una query MS Access 4
R Aiuto con le query MS Access 2
Y query di DELETE PHP 4
V Query Oracle Oracle 0
L query somma PHP 8
W Query SQL Classic ASP 2
M Problemi con query a più tabelle PHP 3
Alex_70 Conteggio nella query PHP 0
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
A nome file che contiene punto passato come parametro a query PHP 31
F query e form con select multipla PHP 17
M Problema su query JOIN in tre tabelle PHP 0
M Ordinare una query join PHP 2
Alex_70 Query ORDER BY PHP 18
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
Alex_70 foreach explode query PHP 3
O query con date in formato stringa PHP 3
Tommy03 Unione query di 4 tabelle MySQL 1
I Fatal error: Query Failed! SQL: SELECT * INTO OUTFILE PHP 1
Alex_70 Query group actor e film PHP 26
TpD Incolonnare risultati query (mysql_result deprecato...) PHP 3

Discussioni simili