ご挨拶と私の質問を読んでいただきありがとうございます。
まず、下の図は、私が作成しているデータベースの一部を示しています。私の目標は(これを行うためのより良い方法がない限り)、通常は「schedule_name」や「schedule_description」などと呼ばれるフィールドの複数の言語を別のテーブルでサポートすることです。PS-この図の列タイプのラベルが正しくないことはわかっています。
ご覧のとおり、ボート、クルーズ、スケジュールにはそれぞれ外部キーとして言語IDがあります。クルーズとボートでスケジュール記録を引き出したい場合、どうすればいいですか?
テーブルを問題なく結合し、列エイリアスを並べ替えましたが、各エイリアスに正しい詳細を取得したいと思います。明確にするために
スケジュールには、language_id=1を使用して選択するための独自のlanguage_language_id参照があります。language_name_enは-月曜日の朝
Cruiseには、language_id=2を使用して選択するための独自のlanguage_language_id参照があります。language_name_enは--SunnyHaze
ボートには、language_id=3を使用して選択するための独自のlanguage_language_id参照があります。language_name_enは--BlueDolphin
この質問へのコメントに答える; enは英語、zhsは簡略化された中国語、zhtは繁体字中国語です。これらは、このシステムが動的データをサポートするための言語です。このようなテーブルをレイアウトして、言語の処理のみを担当するユーザータイプが存在できるようにすると便利だと思いました。スケジューリングテーブルを処理する必要はありません。
これまでのところ、後で示すように、サンプルレコードを取得するためのクエリは次のようになります。
SELECT
schedule_id,
s.language_name_en as schedule_name_en,
l.language_name_zhs as schedule_name_zhs,
l.language_name_zht as schedule_name_zht,
schedulesafename,
schedule_expected_arrival,
schedule_expected_departure,
cruise_id,
c.language_name_en as cruise_name_en,
c.language_name_zhs as cruise_name_zhs,
c.language_name_zht as cruise_name_zht
FROM
schedule as s
INNER JOIN
language as l
ON s.language_language_id = l.language_id
INNER JOIN
cruise as c
ON c.language_language_id = l.language_id
Where
schedule_id = 1;
リストされたクエリを使用して返されるもののサンプルデータを次に示します。
scheduleid - 1
schedule_name_en - monday morning
schedule_name_zhs - 星期一的早晨
schedule_name_zht - 星期一的早晨
schedule_safename - pwupglfkpmwcbkgzhmzxrqfeqzlhvaed
schedule_expected_arrival - 1353138308
schedule_expected_departure - 1353139218
cruise_id - 1
cruise_name_en - Sunny Haze
cruise_name_zhs - 彩霞
cruise_name_zht - 彩霞
cruise_safename - bbhdrunzdmftyvhprefvogysgfrtnkgm
これにより、データベースからデータを取得する方法がわかります。私の主な問題は、同じクエリで言語レコードをどのようにリッピングするかです。私の質問を読んでくれてありがとう。