Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412

    [MySQL] Restituire 20 risultati per volta, ma calcolare comunque il totale dei record

    Salve ho un problema con una query

    (non badate ad eventuali errori di sintassi, ho dovuto semplificare perchè la query originale è molto più contorta)

    Codice PHP:
    "SELECT m.*,
    (
      SELECT count(1) FROM votazioni_messaggi v
      WHERE v.idMessaggio=m.ID
      AND v.userID='
    $uID'
    ) AS Votato,

    (
       SELECT count( * ) FROM messaggi m 
       WHERE m.Scadenza>'
    $Orario'
    )  AS totale,

    AVG(voto) AS votazioneMedia, 
    FROM messaggi m 
    LEFT JOIN votazioni_messaggi v ON v.idMessaggio = m.ID 
    WHERE m.Scadenza>'
    $Orario'
    LIMIT 
    $partenza, 20"

    Ebbene, quando poi vado a fare l'echo restituendo un oggetto JSON, mi rendo conto che questa sintassi mi innesta il valore di "totale" in ciascun record trovato, mentre io necessito di conteggiare il totale una sola volta e sopratutto come un'entità a se stante (non innestata)..

    Per fare un esempio, attualmente mi ritrovo con un JSON del genere
    -0
    --titoloMessaggio
    --testoMessaggio
    --mittente
    --totale


    -1
    --titoloMessaggio
    --testoMessaggio
    --mittente
    --totale


    -2
    --titoloMessaggio
    --testoMessaggio
    --mittente
    --totale



    e così via

  2. #2
    Se ho ben capito riassumendo ti serve una lista piu' un raggruppamento.

    Semplice, fai due query: una per la lista ed una per il raggruppamento

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    412
    si prima del limit c'è pure un GROUP BY.
    Quindi non è tecnicamente possibile fare tutto in una sola query?

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Per definizione, l'output della query è una tabella, il che significa che ogni riga deve avere lo stesso numero di dati. Quindi non puoi avere in output un dato che è unico e riferito a tutte le righe, a meno che tu non lo ripeta in ogni riga, che poi è quello che fai nell'esempio.

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.