Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590

    [mysql] ordinamento per parametro

    salve, queste le tabelle:

    tabella values:
    user_id, field_id, value

    tabella points:
    user_id, points

    il parametro che mi serve contiene la professione, ha field_id=16.
    Quello che deve restituire la query è l'utente con punteggio massimo per ogni professione, ordinati dal punteggio massimo.
    Esempio di risultato da ottenere:
    codice:
    user_id | value    | max_points
    10      | attore   | 100
    12      | cantante | 90
    32      | musicista| 80
    questa è la mia query, ma c'è un errore logico, ogni record ha il punteggio massimo, ma non l'userid che ha quel punteggio..
    codice:
    SELECT c.user_id,c.value, MAX( p.points ) AS max_pts
    FROM values AS c
    INNER JOIN points AS p ON p.user_id = c.user_id
    WHERE c.field_id =16
    GROUP BY c.value
    ORDER BY p.points DESC
    Ultima modifica di jimbo0; 14-09-2014 a 00:47

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ti manca il FROM tabella
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    errore incollando la query, ora ho corretto, la query problematica è quella.

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova questo. Non testato.

    Codice PHP:
    SELECT c.user_id,c.valuep.points AS max_pts
    FROM values 
    AS c
    INNER JOIN points 
    AS p ON p.user_id c.user_id
    INNER JOIN 
    (
      
    SELECT A.value AS A_valueMAXB.points ) AS A_max_pts
      FROM values 
    AS A
      INNER JOIN points 
    AS B ON B.user_id A.user_id
      WHERE A
    .field_id =16
      GROUP BY A
    .value
    ON A_value c.value AND A_max_pts p.points
    WHERE c
    .field_id =16
    ORDER BY p
    .points DESC 
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    c'era un piccolo errore di sintassi (la query nidificata non ha l'alias)

    non ho ancora a disposizione il db completo, quindi non canto vittoria subito, ma, almeno per ora, funge alla grande
    mille grazzzie!
    Ultima modifica di jimbo0; 14-09-2014 a 01:33

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.