Ich habe zwei Tabellen in meiner MySQL-Datenbank Dienste und Beziehungen, die ich brauche nur zählen, wie viele Dienste in Beziehungen Tisch ist, so versuche ich, wie dieseLEFT JOIN und COUNT zwei Abfragen Unterschied
Meine Tabellen zu tun:
- Beziehungen - | relation_id | parent_id |
- Dienstleistungen - | service_id | slug_title | Titel |
Code:
SELECT
services.slug_title,
services.title,
COUNT(relationships.parent_id) AS num_companies
FROM
services
LEFT JOIN
relationships ON services.service_id = relationships.parent_id
GROUP BY
services.service_id
ORDER BY
services.title ASC
und ich habe eine andere Abfrage
SELECT
services.slug_title,
services.title,
COALESCE(companies, 0) AS num_companies
FROM
services
LEFT JOIN
(SELECT
parent_id, COUNT(*) AS companies
FROM
relationships
GROUP BY
parent_id) relationships ON services.service_id = relationships.parent_id
ORDER BY
services.title ASC
Beide Abfragen das gleiche Ergebnis zurück und arbeiten wie ich brauche, aber das ist besser, oder direkt in besser zu nutzen Leistung Weg?
Ich würde mit dem ersten gehen, die Inline-Ansicht zu vermeiden verwendet in der zweiten ("Beziehung") –
Beachten Sie, dass Abfrage 1 eine ungültige GROUP BY hat, die auf neueren MySQL-Versionen nicht ausgeführt wird – jarlh
Können Sie erklären, warum? – SkySonny