[英]MySQL query to select all results from table 2 that match table 1
我有存儲在數據庫中的頁面,還有另一個存儲該頁面翻譯的表:
表格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
一起存在的Translations
,並將其作為LanguageID
作為數組鍵的它自己的數組?
這樣,我可以檢查翻譯是否存在,例如:
$language_id = 1;
if (isset($query['Translations'][$language_id])) {
echo $query['Translations'][$language_id]['Title'];
} else {
echo $query['Title'];
}
您需要將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 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.