Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.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
Php MySQL查询选择表2中与表1匹配的所有结果_Php_Mysql - Fatal编程技术网

Php MySQL查询选择表2中与表1匹配的所有结果

Php MySQL查询选择表2中与表1匹配的所有结果,php,mysql,Php,Mysql,我将页面存储在数据库中,另一个表存储同一页面的翻译: 表第页\u页: ID Title Content 1 First Page Stuff... 2 Second Page More stuff... 表PAGEU翻译: ID PageID LanguageID Title Content 1 1 2 Primero pagina Cosas... 因此

我将页面存储在数据库中,另一个表存储同一页面的翻译:

表第页\u页:

ID    Title        Content
1     First Page   Stuff...
2     Second Page  More stuff...
表PAGEU翻译:

ID    PageID    LanguageID    Title             Content
1     1         2             Primero pagina    Cosas...
因此,现在我正在查询
page\u pages
表以获取页面信息:

$query = SELECT * FROM page_pages WHERE ID = 1
我如何调整此查询以选择以
PageID
作为
translations
存在的翻译,并将其作为自己的数组,以
LanguageID
作为数组键

这样,我可以检查翻译是否存在,如:

$language_id = 1;

if (isset($query['Translations'][$language_id])) {
  echo $query['Translations'][$language_id]['Title'];

} else {
  echo $query['Title'];
}

您需要将MySQL的
group\u concat
函数与“left join”一起使用,例如:

SELECT
    pp.id,
    pp.title,
    pp.content,
    group_concat(pl.language_id) AS languages
FROM
    page_pages pp
LEFT JOIN page_translations pl ON pp.id = pl.pageID
WHERE
    pp.id = 1
GROUP BY
    pp.id;

以下是您需要使用MySQL的
group\u concat
函数和“left join”的

,例如:

SELECT
    pp.id,
    pp.title,
    pp.content,
    group_concat(pl.language_id) AS languages
FROM
    page_pages pp
LEFT JOIN page_translations pl ON pp.id = pl.pageID
WHERE
    pp.id = 1
GROUP BY
    pp.id;

这是

你想要什么结果?你想要什么结果?谢谢。我自己永远也不会想到这个谢谢。我一个人永远也不会想到这一点