2017-03-24 18 views
0

正しいクエリを見つけることができず、既存の回答はすべてWordpressに関連しており、私はワードプレスではありません。 私はすべての親IDを取得したい、この表に特定の製品のすべての親カテゴリを取得

categories table

を持っています。 製品がカテゴリ「黄色」の場合、黄色のカテゴリからすべての親IDを取得したいので、「黄色」のクエリは70,68,66,0となります。

したがって、すべての可能な結合最良の結果は現在のカテゴリ(またはそれらのすべて)です。

 $sql2 = "SELECT c1.ID, c1.si, c2.si, c2.ID as parent_id 
       FROM v_menu c1 
       LEFT JOIN v_menu c2 
       on (c2.parent = c1.ID) 
       WHERE (c1.ID = :c1)"; 
     $st2 = $this->db->prepare($sql2); 
     $st2->execute(array(':c1' => $row['MID'])); // $row['MID'] => product category 
     $res2 = $st2->fetchAll(); 

これは、製品カテゴリに一致するカテゴリのみを返します。

ヒント、リンク、解決策など、多くのヘルプがあります。

+0

これを試してみてください。http://stackoverflow.com/questions/20215744/how-to-create-a-mysql-hierarchical-recursive-query – RJParikh

+0

はありがとうございました!この記事で見つかった答え - > http://stackoverflow.com/a/24901882/2269385 – Blue

+1

[MySQLで再帰的SELECTクエリを実行するにはどうすればいいですか?](http://stackoverflow.com/questions/16513418/how -to-do-the-recursive-select-query-in-mysql) – Fabiano

答えて

0

親IDが子IDよりも小さい場合、これは正しいクエリです(通常はこれが親IDです)。

SELECT t.ID, t.si, @pv := t.parent parent 
      from (select * from v_menu order by ID desc) t 
      join (select @pv := 70) tmp 
      where t.ID = @pv 

参考:https://stackoverflow.com/a/24901882/2269385

関連する問題