Ich versuche SELECT
aus einer Tabelle und zählen aus zwei anderen Tabellen basierend auf den Zeilen aus der ersten Tabelle. Ich habe den folgenden Code ausprobiert, aber die Zeilen bleiben leer.Auswahl aus drei Tabellen
SELECT list.id, list.title, list.body, list.poster, list.created_at, count(comments.id) as comcount, count(supports.topic_id) as supcount
FROM (
SELECT *
FROM topics
ORDER BY created_at DESC
LIMIT 5
) AS list, comments, supports
WHERE
list.id = comments.id OR
list.id = supports.topic_id
Durch in diesem Szenario Tabelle topics
hat nur zwei Zeilen und Tabellen comments
und supports
haben keine Zeilen in ihnen, aber dennoch sollte ich in der Lage sein, sich zwei Reihen mit ihren Aliase supcount
und comcount
jeder Wert mit 0
als eine Ausgabe.
Ich habe die Lösung zu dem oben genannten, aber versuche etwas anderes mit der bereitgestellten Lösung, die ich im Kommentarbereich der bereitgestellten Lösung erklärte.
SELECT
t.id,
t.title,
t.body,
t.poster,
t.created_at,
s.supporter,
IFNULL((SELECT COUNT(*) FROM comments c WHERE c.id = t.id), 0) AS comcount,
IFNULL((SELECT COUNT(*) FROM supports s WHERE s.topic_id = t.id), 0) AS supcount,
CASE WHEN (s.supporter = "Davies Alex") THEN '1' ELSE '0' END sup,
CASE WHEN (c.commenter = "Davies Alex") THEN '1' ELSE '0' END com
FROM topics t, comments c, supports s
ORDER BY created_at DESC
ist das falsch? list.id = comments.id, in der Kommentartabelle kann list_id stehen? –
@GeorgeGarchagashashvili versuche, die 'id's in der Liste zu beiden' Kommentare' Tabelle und 'unterstützt' Tabelle –
liefern Sie db Schema, Beispiel von Daten und erwartetes Ergebnis bitte sqlfiddle wäre perfekt – Alex