Ich versuche, eine einzige MySQL-Abfrage zu Daten innerhalb einer Drittanbieter-Funktion auswählen, das Problem habe ich aber sie nur die ID übergeben. Ich muss diese ID verwenden, um alle zugehörigen Datensätze auszuwählen.MySQL where subselect auf mehrere Felder
Derzeit ist die MySQL-Anweisung sieht wie folgt aus:
SELECT h.id, h.notification_id, h.status, d.detail
FROM headers h, details d
WHERE h.host_id = (SELECT host_id FROM headers WHERE id = '{$rowid}')
AND h.service_id = (SELECT service_id FROM headers WHERE id = '{$rowid}')
AND h.instance = (SELECT instance from headers where id = '{$rowid}')
AND h.id = d.header_id;
Jetzt das funktioniert, aber ich bin die schlechte MySQL-Engine denken läuft 3 Subqueries, weil ich nicht über 3 Informationen zur Verfügung zu mir .
Also fragte ich mich, ob es eine Möglichkeit gibt, dies mit einer Abfrage und einer Unterabfrage auszuführen, um die Last auf der Datenbank zu speichern?
Vielen Dank im Voraus.
Fördern Sie die Verwendung von expliziten 'JOIN' sintaxis, schrieb Aaron Bertrand einen schönen Artikel [Schlechte Angewohnheiten zu treten: mit alten Stil JOINs] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/ 08/bad-Gewohnheiten-zu-kick-using-old-style-joins.aspx) darüber. –