Im Versuch, eine Tabelle mit mehreren Joins, eins für die Anzahl der Kommentare mit COUNT und eins, um den gesamten Wert der Abstimmung mit SUM wählen, ist das Problem, dass die beiden Joins einander beeinflussen, statt Angezeigt:mysql: multiple Join Problem
3 Stimmen 2 Kommentare
ich 3 * 2 = 6 Stimmen und 2 * 3 Kommentare
Dies ist die Abfrage ich verwende:
SELECT t.*, COUNT(c.id) as comments, COALESCE(SUM(v.vote), 0) as votes
FROM (topics t)
LEFT JOIN comments c ON c.topic_id = t.id
LEFT JOIN votes v ON v.topic_id = t.id
WHERE t.id = 9
Führt das nicht zu mehr Lade- und mehr Arbeit für die Datenbank oder ist es für die Datenbank schwieriger, mit mehreren Joins zu arbeiten und sie dann zu trennen? – Dennis
Die meisten Datenbanken verfügen über internes Caching für Daten- und Indexseiten. Daher ist dies möglicherweise kein Problem. Auch die Arbeit, die notwendig ist, um das kartesische Produkt zu kompensieren, kann schlechter sein. Teilweise kommt es auf Ihr spezifisches System und Ihre Daten an, so dass die genaueste Antwort das Testen in * Ihrer * Umgebung erfordert. –