簡體   English   中英

MySQL查詢以選擇表2中與表1匹配的所有結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM