Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie kann ich effizient mehrere Spalten aus Attribut- und Übersetzungstabellen in MySQL auswählen und dabei mehrere Übersetzungen und mögliche Sprachlücken berücksichtigen?

Mary-Kate Olsen
Freigeben: 2024-10-28 05:28:30
Original
630 Leute haben es durchsucht

How can I efficiently select multiple columns from attribute and translation tables in MySQL, considering multiple translations and potential language gaps?

Auswählen mehrerer Spalten in einer MySQL-Unterabfrage

Frage:

Wie kann man in einer MySQL-Datenbank effizient mehrere Spalten auswählen? aus Attribut- und Übersetzungstabellen, wenn man bedenkt, dass für jedes Attribut mehrere Übersetzungen vorhanden sind und Übersetzungen möglicherweise nicht in allen Fällen für alle Sprachen verfügbar sind?

Antwort:

Der empfohlene Ansatz besteht darin, Unterabfragen zu verwenden, um mehrere Spalten in einer einzigen Abfrage abzurufen. Der Schlüssel liegt darin zu verstehen, dass Unterabfragen als virtuelle Tabellen dienen können, indem eine SELECT-Anweisung in Klammern eingeschlossen wird.

Betrachten Sie die folgende Abfrage:

<code class="sql">SELECT a.attr, b.id, b.trans, b.lang
FROM attribute a
JOIN (
    SELECT at.id AS id, at.translation AS trans, at.language AS lang, a.attribute
    FROM attributeTranslation at
) b ON (a.id = b.attribute AND b.lang = 1)</code>
Nach dem Login kopieren

In dieser Abfrage erstellt die SELECT-Anweisung in Klammern eine virtuelle Tabelle b, die die gewünschten Spalten für die Übersetzungsinformationen enthält. Diese virtuelle Tabelle wird dann mit der realen Attributtabelle a verknüpft, wobei die ON-Klausel genutzt wird, um Attribute abzugleichen und nach Sprache zu filtern.

Durch die Verwendung von Unterabfragen auf diese Weise können Sie effektiv mehrere Spalten aus einer einzelnen Tabelle auswählen und so sicherstellen dass alle Attribute zurückgegeben werden, auch solche ohne Übersetzungen in der angegebenen Sprache.

Alternative Methoden:

Alternativ können Sie für jede Spalte separate Unterabfragen durchführen:

<code class="sql">SELECT a.attr, 
(select id from attributeTranslation where attribute=a.id and language=1),
(select translation from attributeTranslation where attribute=a.id and language=1), 
from attribute a;</code>
Nach dem Login kopieren

Dieser Ansatz ist jedoch im Allgemeinen weniger effizient, da er mehrere Unterabfragen erfordert.

Das Verbinden von drei Tabellen (Attribut, Attributsprache und Übersetzung) scheint eine praktikable Lösung zu sein, führt aber im Allgemeinen zu Ergebnissen in schlechterer Leistung im Vergleich zur Verwendung von Unterabfragen.

Das obige ist der detaillierte Inhalt vonWie kann ich effizient mehrere Spalten aus Attribut- und Übersetzungstabellen in MySQL auswählen und dabei mehrere Übersetzungen und mögliche Sprachlücken berücksichtigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!