sto avendo 2 tabelle: membri e commenti. Seleziono tutti i membri e quindi aggiungo commenti. Ma nei commenti sto selezionando alcuni SUM di punti, e se l'utente non ha mai commentato, non riesco a ottenere quell'utente nell'elenco ?!MySql che seleziona il valore predefinito se non ci sono risultati?
Così come per selezionare il valore predefinito per somma da 0 se l'utente non ha commentato, o qualche altra soluzione:
SELECT c.comment_id AS item_id, m.member_id AS member_id, m.avatar,
SUM(c.vote_value) AS vote_value, SUM(c.best) AS best,
SUM(c.vote_value) + SUM(c.best)*10 AS total
FROM members m
LEFT JOIN comments c ON m.member_id = c.author_id
GROUP BY c.author_id
ORDER BY m.member_id DESC
LIMIT 0, 20
EDIT:
cercherò di spiegare .. Quindi ci sono 2 tabelle, membri e commenti. Ho bisogno di un elenco di tutti gli utenti con classifica. I commenti contengono tutti i voti e le migliori risposte.
Quindi, ho bisogno di un elenco di tutti gli utenti, e loro punteggio. tavolo
Membri:
member_id - username - avatar
Commenti tavolo
comment_id - author_id - vote_value - best (0 OR 1)
cercato anche di scegliere tra commenti e partecipare I membri, ma stessa cosa di nuovo :(
Potete fornire alcuni dati di esempio con un risultato atteso? Non uso MySQL, quindi forse hanno una sintassi di scelta rapida, ma stai raggruppando su una sola colonna ma hai diverse colonne non aggregate nella tua SELECT –
@Tom H .: MySQL in realtà consente questa sintassi: [GROUP BY e HAVING with Hidden Columns] (http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html). –
Grazie Peter. Sapevo che almeno uno dei principali RDBMS lo permetteva, ma non riuscivo a ricordare quale. Poiché consente raggruppamenti "illogici", tuttavia, potrebbe causare dati "mancanti" perché "Quando si utilizza questa funzione, tutte le righe in ogni gruppo devono avere gli stessi valori per le colonne omesse dalla parte GROUP BY. Il server è gratuito per restituire qualsiasi valore dal gruppo, quindi i risultati sono indeterminati a meno che tutti i valori non siano gli stessi. " c.comment_id potrebbe non essere sempre lo stesso per un dato c.author_id –