Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489

    query mysql: ordinare il group

    ciao a tutti!
    ho un urgenza da risolvere i lprima possibile. dovrei ordinare i dati all interno di un group
    ho la seguente query:

    $bidlist=mysql_query("SELECT id, username, value, COUNT( value ) AS nr
    FROM `naw` where baseid='".$datarow['id']."' GROUP BY value ORDER BY value asc") or die(mysql_error());

    se io ho una tabella con questi valori:

    1 sharky 12
    2 gino 12
    3 sharky 13
    4 gino 14

    la query mi restituirà:

    1 sharky 12 2
    3 sharky 13 1
    4 gino 14 1

    io avrei bisogno che la prima riga sia gino, e non sharky. cioè:

    2 gino 12 2
    3 sharky 13 1
    4 gino 14 1


    cè modo di ordinare i valori all interno di un group? in particolare vorrei dare la precedenza a un username specifico. cioè vorrei sapere se l username è gino o no. in parole povere, io vorrei sapere se in quale group è presente gino.



    grazie

    ciao

    igor

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    mi andrebbe anche piu che bene un risultato del genere:

    1 sharky 12 2
    2 gino 12 2
    3 sharky 13 1
    4 gino 14 1

    praticamente il risultato senza il group. ma se tolgo il group ottengo soltanto un errore mysql che mi dice che con il count devo per forza mettere un group.

    vi prego aiutatemi ho il sito gia online e devo risolvere al piu presto.

    grazie

    igor

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Vedi se così va bene.

    codice:
    SELECT id, username, value, COUNT( value ) AS nr, if(username='gino',1,2) as ordine
    FROM naw
    GROUP BY value ORDER BY ordine,value asc

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    ciao grazie della risposta.

    purtroppo non va. mi perde il group... cè modo di semplicemente aggiungere il valore del group alla fine? come nel mio secondo post, e restituire tutti i risultati?

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ho riletto il 3d un paio di volte ma mi sono perso.
    Prima domanda. Cosa viene passato con

    where baseid='".$datarow['id'] ?


    Seconda domanda. Perchè sharky 12 è pari a 2?

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    ciao!

    nella tabella ho vari valori, di vari id aste, (presente le aste al ribasso? le ho implementate in un gioco di guerra.. possono comprarsi le armi.. ) nella variabile cé l id dell asta. cosi sa quali valori cercare di tutte le puntate presenti nel database.

    sharky 12 é pari a due perche il group lo fa in base al valore 12, che é presente 2 volte. una volta per sharky e una per gino.. pero dato che sharky é stato il primo a fare la puntata 12, in quel group viee inserito lui come username e non gino.

    io cio che devo saere alla fine é:

    gino cosa ha puntato? le puntate di gino sono state fatte uguali anche da altri utenti o le ha fatte solo lui?

    e purtroppo non so farlo con una sola query.

    grazie

    ciao

    igor

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    nessuno sa aiutarmi? scusate la fretta ma sono in crisi per sta cosa..

    grazie

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    Originariamente inviato da nicola75ss
    Vedi se così va bene.

    codice:
    SELECT id, username, value, COUNT( value ) AS nr, if(username='gino',1,2) as ordine
    FROM naw
    GROUP BY value ORDER BY ordine,value asc

    mi sapresti gentilmente spiegare esattamente cosa fa la tua query? cioé if.... as ordine. non l ho capito. magari riesco a riadattarlo come serve a me... 1,2 cosa vuol dire?

    grazie

    ciao

    igor

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    1 e 2 sono semplicemente due numeri arbitrari che ho scelto, uno più grande e uno più piccolo..Potresti utilizzare 0 e 1, 10 e 20 o qualsiasi altra combinazione.
    Tramite l'if verifico se lo username è gino. In caso affermativo assegno al campo cui ho dato l'alias ordine il valore 1, in caso negativo (qualunque altro username) assegno il valore 2. A questo punto ordino su tale campo in ordine crescente e quindi gino risulterà visualizzato per primo.

    Mi spiace ma per il problema della tua query non so proprio come aiutarti. Bisognerebbe conoscere la struttura esatta della tabella e probabilmente ripensarla diversamente.

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.