Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:当右表中存在一个或另一个值时,只在左连接中显示一条记录_Mysql - Fatal编程技术网

MySQL:当右表中存在一个或另一个值时,只在左连接中显示一条记录

MySQL:当右表中存在一个或另一个值时,只在左连接中显示一条记录,mysql,Mysql,我有一个包含以下条目的表格: 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

我有一个包含以下条目的表格:

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”的表,其中包含关于某个“place”的信息。第二列和第三列属于另一个名为“名称”的表,其中包含这些地名的各种语言名称,由“id_language”值标识。这两个表通过“一对多关系”连接,其中一个“位置”可以有一个或多个不同语言的“名称”

我希望通过查询显示每个位置的一个且仅一个名称,条件如下: 1) 如果存在某个地方的名称,且该名称具有给定给查询的特定id_语言,则仅打印该名称; 2) 否则,用另一种id_语言打印该地点的名称

示例:我希望所有的地方都有一个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

那么您的查询在哪里呢?呃,我在问:但是至少您应该显示您已经尝试过的内容。我显示原始查询以显示本文中的第一个表:
SELECT
places
id
name\u descriptions
name
,name_description.id_language FROM
places`LEFT JOIN
places_name_description
id
=
places_name_description
id_places
LEFT JOIN
places_name_description
上的name_description
name\u descriptions
id
ORDER BY places.id,
name\u descriptions
name
ASC`@meda这就是问题所在,我不知道该怎么办。在Where子句中使用“or”并按位置id分组,它将随机抽取名称。