簡體   English   中英

mysql查詢從給定的表結構創建SEO友好的URL

[英]mysql query to create SEO friendly url from given table structure

我正在嘗試使用下表創建SEO友好的URL:

分類表

類別

頁數表

頁數表

我正在嘗試編寫一個mysql查詢,它將使用產生以下輸出的類別表為pages表中的所有頁面生成URL。

預期的輸出:

預期

這是我嘗試生成最多4個段的URL的MySql查詢:

SELECT pg.id AS page_id, p3.id, p1.category AS segment1, p2.category AS segment2, p3.category AS segment3, 
pg.page_name AS PAGE , concat( '/', p1.category, '/', p2.category, '/', p3.category, '/', pg.page_name, '/' ) AS url
FROM category AS p1, category AS p2, category AS p3, pages AS pg
WHERE pg.category_id = p3.id
AND p3.parent_id = p2.id
AND p2.parent_id = p1.id

鏈接到SQL Fiddle

這是我自己的問題的答案:

我嘗試使用“ MySql Modified preorder tree to create url ”方法,該方法在查詢優化和通過stackoverflow進行的其他研究方面更有用。

不是最好的解決方案,但是它有效 ;)

SELECT pagetable.id AS page_id
, c1.id
, pagetable.page_name AS PAGE 
, concat( 
    IF(c3.category IS NULL,'','/')
  , IF(c3.category IS NULL,'',c3.category)
  , IF(c2.category IS NULL,'','/')
  , IF(c2.category IS NULL,'',c2.category)
  , IF(c1.category IS NULL,'','/')
  , IF(c1.category IS NULL,'',c1.category)
  , '/'
  , pagetable.page_name
  , '/' ) AS url
FROM pages AS pagetable 
LEFT JOIN category AS c1
ON pagetable.category_id = c1.id
LEFT JOIN category AS c2
ON c1.parent_id = c2.id
LEFT JOIN category AS c3
ON c2.parent_id = c3.id

暫無
暫無

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

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