MySQL查询从表2中选择与表1

时间:2016-12-13 17:00:33

标签: php mysql

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

表page_pages:

ID    Title        Content
1     First Page   Stuff...
2     Second Page  More stuff...

表page_translations:

ID    PageID    LanguageID    Title             Content
1     1         2             Primero pagina    Cosas...

所以,现在我正在查询page_pages表以获取页面信息:

$query = SELECT * FROM page_pages WHERE ID = 1

如何调整此查询以选择PageID AS Translations中存在的翻译,并使用LanguageID作为数组键拥有自己的数组?

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

$language_id = 1;

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

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

1 个答案:

答案 0 :(得分:2)

你需要使用MySQL的group_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;

这里是 SQL Fiddle