我有一张包含这些条目的表格:
id name id_language
1 San Paolo Stadium 2
1 Stadio San Paolo 1
1 Stade San Paolo 3
2 Castel Nuovo 1
2 Maschio Angioino 2
3 Abbazia di Sant'Antimo 1
4 Fontana di Trevi 1
4 Trevi Fountain 2
4 Trevi-Brunnen 3
第一列属于名为“Places”的表,其中包含有关某个“地点”的信息。第二列和第三列属于另一个名为“Names”的表,其中包含各种语言中这些地方的名称,由“id_language”值标识。这两个表与“一对多关系”相结合,其中一个“地方”可以有不同语言的一个或多个“名称”。
我希望每个地方只显示一个且只有这些名称的查询,并符合以下条件: 1)如果存在具有给定查询的特定id_language的地方的名称,则仅打印该名称; 2)否则,用另一个id_language打印那个地方的名称。
示例:我想要所有名称都带有id_language = 2的地方。没有id_language = 2名称的地方将打印出包含id_language = 1的名称,如下所示:
id name id_language
1 San Paolo Stadium 2
2 Maschio Angioino 2
3 Abbazia di Sant'Antimo 1
4 Trevi Fountain 2
原始查询:
SELECT places.id,
name_descriptions.name,
name_descriptions.id_language
FROM places
LEFT JOIN places_name_descriptions ON places.id = places_name_descriptions.id_places
LEFT JOIN name_descriptions ON places_name_descriptions.id_name_description = name_descriptions.id
ORDER BY places.id, name_descriptions.name ASC