Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh memilih berbilang lajur dengan cekap daripada jadual atribut dan terjemahan dalam MySQL, dengan mengambil kira pelbagai terjemahan dan potensi jurang bahasa?
Soalan:
Dalam pangkalan data MySQL, bagaimana seseorang boleh memilih berbilang lajur dengan cekap daripada jadual atribut dan terjemahan, memandangkan berbilang terjemahan wujud untuk setiap atribut dan terjemahan mungkin tidak tersedia untuk semua bahasa dalam semua kes?
Jawapan:
Pendekatan yang disyorkan adalah untuk menggunakan subkueri untuk mendapatkan berbilang lajur dalam satu pertanyaan. Kuncinya ialah memahami bahawa subkueri boleh berfungsi sebagai jadual maya dengan melampirkan pernyataan pilihan dalam kurungan.
Pertimbangkan pertanyaan berikut:
<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>
Dalam pertanyaan ini, pernyataan SELECT dalam kurungan mencipta jadual maya b yang mengandungi lajur yang dikehendaki untuk maklumat terjemahan. Jadual maya ini kemudiannya dicantumkan ke jadual atribut sebenar a, memanfaatkan klausa HIDUP untuk memadankan atribut dan menapis mengikut bahasa.
Dengan menggunakan subkueri dengan cara ini, anda boleh memilih berbilang lajur dengan berkesan daripada satu jadual, memastikan bahawa semua atribut dikembalikan, walaupun tanpa terjemahan dalam bahasa yang ditentukan.
Kaedah Alternatif:
Sebagai alternatif, anda boleh melakukan subkueri berasingan untuk setiap lajur:
<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>
Walau bagaimanapun, pendekatan ini secara amnya kurang cekap kerana memerlukan berbilang subkueri.
Menyertakan tiga jadual (atribut, bahasa atribut dan terjemahan) mungkin kelihatan sebagai penyelesaian yang berdaya maju, tetapi secara umumnya ia menghasilkan dalam prestasi yang lebih teruk berbanding menggunakan subkueri.
Atas ialah kandungan terperinci Bagaimanakah saya boleh memilih berbilang lajur dengan cekap daripada jadual atribut dan terjemahan dalam MySQL, dengan mengambil kira pelbagai terjemahan dan potensi jurang bahasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!