簡體   English   中英

SQL:重構GROUP_CONCAT查詢

[英]SQL: Refactoring a GROUP_CONCAT query

我的最終目標是為博客帖子生成標簽鏈接,與帖子相關的標簽。

當前,我的查詢具有一個GROUP_CONCAT ,它可以獲取相關標簽,而返回tags列的值類似於:

'布魯克林,曼哈頓,紐約'

SELECT 
post.id, 
post.name, 
GROUP_CONCAT( tags.name order by tags.name ) AS tags 
FROM post 
LEFT JOIN tags_items
  ON post.id = tags_items.post
LEFT JOIN tags
  ON tags_items.tag = tags.id

使用此字符串,在我的服務器端代碼中,我將其用逗號分割並循環生成標簽。 但是,現在我需要進行這些鏈接,並且需要知道每個標簽的各自ID,以便生成諸如<a href="?tag=1">New York</a>類的鏈接。 我的HTML結構如下:

<div class=post>
  <h2>Rakim Allah!</h2>
  <div class=tags>
    <a href="/tags/1">Brooklyn</a>
    <a href="/tags/2">Manhattan</a>
    <a href="/tags/3">New York</a>
  </div>
</div>

tags表:

id    name
1     Brooklyn
2     Manhattan

tags_items表(無pk):

post  tag
1     1

您可以嘗試將ID添加到帶有不同定界符的組列表中的每個項目:

SELECT post.id, post.name, 
GROUP_CONCAT( CONCAT(tags.id, ';', tags.name) order by tags.name ) AS tags 
FROM post 
LEFT JOIN tags 
          ON post.id = tags.post_id;

現在,您只需對分號進行其他拆分即可獲取ID和名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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