Erstellen Sie eine durch Kommas getrennte Liste mithilfe einer SQL-Abfrage
Wenn mehrere Tabellen Anwendungs- und Ressourcendaten enthalten, besteht eine häufige Aufgabe darin, eine Tabelle aufzulisten, in der alle Ressourcennamen zusammen mit den zugehörigen Anwendungsnamen durch Kommas getrennt aufgeführt sind. Um dies mit einer einzelnen SQL-Abfrage zu erreichen, führen Sie die folgenden Schritte aus:
MySQL:
<code class="language-sql">SELECT r.name, GROUP_CONCAT(a.name SEPARATOR ',') AS application_names FROM RESOURCES r JOIN APPLICATIONSRESOURCES ar ON ar.resource_id = r.id JOIN APPLICATIONS a ON a.id = ar.app_id GROUP BY r.name</code>
SQL Server (2005):
<code class="language-sql">SELECT r.name, STUFF((SELECT ',' + a.name FROM APPLICATIONS a JOIN APPLICATIONRESOURCES ar ON ar.app_id = a.id WHERE ar.resource_id = r.id GROUP BY a.name FOR XML PATH(''), TYPE).value('text()[1]','NVARCHAR(max)'), 1, LEN(','), '') AS application_names FROM RESOURCES r</code>
SQL Server (2017):
<code class="language-sql">SELECT r.name, STRING_AGG(a.name, ',') AS application_names FROM RESOURCES r JOIN APPLICATIONSRESOURCES ar ON ar.resource_id = r.id JOIN APPLICATIONS a ON a.id = ar.app_id GROUP BY r.name</code>
Oracle: Oracle bietet mehrere Optionen für die String-Aggregation/-Verknüpfung. Informationen zur spezifischen Syntax und zu den Anforderungen finden Sie in der Dokumentation.
Diese Abfragen verknüpfen die Tabelle „RESOURCES“ mit den Tabellen „APPLICATIONSRESOURCES“ und „APPLICATIONS“, um Ressourcennamen und zugehörige Anwendungsnamen abzurufen. Die Funktion „GROUP_CONCAT“, „STUFF“ oder „STRING_AGG“ wird dann verwendet, um den Anwendungsnamen in einer durch Kommas getrennten Liste jeder Ressource zu verketten. Um die Lesbarkeit zu verbessern, haben wir den Ergebnisspalten Aliase application_names
hinzugefügt.
Das obige ist der detaillierte Inhalt vonWie erstelle ich durch Kommas getrennte Listen zugehöriger Anwendungsnamen in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!