我在数据库中存储了页面,另一个表存储了同一页面的翻译:
表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'];
}
答案 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 。