とMySQLの変換テーブルに私はこのようなデータベース構造を持っている:不足している言語のフォールバック
国
CREATE TABLE IF NOT EXISTS `countries` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(2) COLLATE utf8_unicode_ci NOT NULL,
`is_active` tinyint(1) NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `UNIQ_5D66EBAD77153098` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
国の言語
CREATE TABLE IF NOT EXISTS `country_languages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`language_id` int(11) DEFAULT NULL,
`country_id` int(11) DEFAULT NULL,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `IDX_1532561982F1BAF4` (`language_id`),
KEY `IDX_15325619F92F3E70` (`country_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
言語
CREATE TABLE IF NOT EXISTS `languages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`iso` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`active` tinyint(1) NOT NULL DEFAULT '1',
`is_primary` tinyint(1) DEFAULT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `UNIQ_A0D153795E237E06` (`name`),
UNIQUE KEY `UNIQ_A0D1537961587F41` (`iso`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
と言語表のデータ:
id name iso
----------------------
1 English en
2 German de
3 Italian it
と国テーブル:
id code
----------------
1 ie
と国の言語テーブル
id country_id language_id name
----------------------------------------------
1 1 1 Ireland in English
2 1 2 Ireland in German
私はそれを表示できるように次の結果を返すクエリを作成しようとしています。デフォルト言語としての英語とid 3(イタリア)と言語のコンテンツが存在しない場合、デフォルトはにフォールバックする必要があり、たとえば設定することが可能である場合
(Language) (Country name)
English Ireland in English
German Ireland in German
Italian #NULL OR EMPTY STRING
そして第二に(可能ならば)私は理解しようとしていますここで
(Language) (Country name)
English Ireland in English
German Ireland in German
Italian Ireland in English #please note language id is 3 -> Italian.
あなたの例では混乱しています。 "country languages table"は、実際にはテーブルか、クエリの結果ですか?また、クエリの直後には、 "id"が何を意味するのか、それらのデータがどのように集まっているのかはっきりしていません。 – Jakumi
@Jakumi私は自分の質問を更新しました。私は今それがより明確であることを望む –