Php Mysql Unisci due tabelle con più condizioni e record nulli - mysql

Ho provato a recuperare i record da 2 tabelle ma non mostra l'output richiesto dove la mia prima tabella è ttreply

tavolo ttreply

E un'altra tabella è ttreplycount in cui il conteggio memorizzato come di seguito:

ttreplycount

Ho provato a recuperare valore, ma non recupera i record come voglio la mia query mysql come di seguito:

SELECT r.id, r.userid, r.`reply`, coalesce(x.votes,0) as Votes
FROM `ttreply` r left join
(SELECT sum(votes) as Votes from `ttreplyvotes` )x ON r.`post_id`=2

Quale mi mostra in questo modo:

Produzione

Quello di cui avevo bisogno è così:

id  userid    reply                Votes
2   3       Testing 2nd reply      -2
3   3       Testing 3nd reply       0
4   3        rewsf                  0

Qualsiasi aiuto sarebbe utile.

risposte:

2 per risposta № 1

Puoi ottenere le righe che desideri spostando la condizione su where clausola:

SELECT r.id, r.userid, r.`reply`, coalesce(x.votes,0) as Votes
FROM `ttreply` r cross join
(SELECT sum(votes) as Votes from `ttreplyvotes` ) x
WHERE r.`post_id` = 2 ;

Questo avrà -2 per tutte e tre le righe. Perché vuoi il totale su una sola riga? Come si determina quale riga ottiene il totale?

MODIFICARE:

Oh, penso di capire:

SELECT r.id, r.userid, r.`reply`, coalesce(x.votes, 0) as Votes
FROM `ttreply` r left join
(SELECT replyid, sum(votes) as Votes
FROM `ttreplyvotes`
GROUP BY replyid
) x
ON x.replyid = r.id
WHERE r.`post_id` = 2 ;

Menu