mysql获得结果的最佳方式

Mon*_*eed 1 php mysql performance

这是我的表格

注意 此表仅供参考

帖子

++++++++++++++++++++++++++++++++++++++++
+   id  |title | desc  |  uid  |status |
++++++++++++++++++++++++++++++++++++++++
+   1   |  a   | aaaa  |   1   |   1   |
++++++++++++++++++++++++++++++++++++++++
+   2   |  b   | bbbb  |   1   |   1   |
++++++++++++++++++++++++++++++++++++++++
+   3   |  c   | cccc  |   2   |   1   |
++++++++++++++++++++++++++++++++++++++++
Run Code Online (Sandbox Code Playgroud)

+++++++++++++++++++++++++++++++++
+  id   | name |parent | status |
+++++++++++++++++++++++++++++++++
+  1    | cat1 |   0   |   1    |
+++++++++++++++++++++++++++++++++
+  2    | cat2 |   0   |   1    |
+++++++++++++++++++++++++++++++++
Run Code Online (Sandbox Code Playgroud)

标签

+++++++++++++++++++++++++
+  id   | name  | title |
+++++++++++++++++++++++++
+  1    | tag1  |ttitle |
+++++++++++++++++++++++++
+  2    | tag2  |title2 |
+++++++++++++++++++++++++
Run Code Online (Sandbox Code Playgroud)

Linked_data

链接为一个2多关系船

链接名称postid cat_or_tag_id

+++++++++++++++++++++++++++++
+ name    |  r1         | r2|
+++++++++++++++++++++++++++++
+ cat     |  1          | 1 |
+++++++++++++++++++++++++++++
+ cat     |  1          | 2 |
+++++++++++++++++++++++++++++
+ tag     |  1          | 2 |
+++++++++++++++++++++++++++++
Run Code Online (Sandbox Code Playgroud)

我想获得带有猫和标签的帖子

什么是最好的方法

我现在知道的唯一方法 是获取帖子,然后foreach post获取它的猫和标签

egg*_*yal 5

SELECT Posts.*, GROUP_CONCAT(Cats.name) AS Cats, GROUP_CONCAT(Tags.name) AS Tags
FROM   Posts
  LEFT JOIN Linked_data ON Linked_data.r1 = Posts.id
  LEFT JOIN Cats        ON Linked_data.r2 =  Cats.id AND Linked_data.name = 'cat'
  LEFT JOIN Tags        ON Linked_data.r2 =  Tags.id AND Linked_data.name = 'tag'
GROUP BY Posts.id
Run Code Online (Sandbox Code Playgroud)

sqlfiddle上看到它.