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获取它的猫和标签
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上看到它.