1
alexsunxl 2018-06-14 16:14:27 +08:00
典型的想得太多, 做得太少, 哈哈哈
别纠结这些了, 最后还是看场景看业务看历史 这种东西没有最佳实践的,只能说相对较合适, 至于怎么是合适,那还是多积累吧 |
2
changrui0608 OP @alexsunxl
兄弟,我不是做的太少,我是做到这儿了不知道怎么办才来问的,你这话就和没说一样啊... |
3
Stevenv 2018-06-14 17:01:19 +08:00
你可以换种方式,多查几次。别想着一条 SQL 查出来。。以前我也是想一条查出来,结果发现是为难自己
|
4
DavidNineRoc 2018-06-14 17:25:55 +08:00 1
看了一下 lv 的 SQL
## 先查询 posts 表 select * from posts where xxxx ## 连接查询关联关系 SELECT `tags`.*, `post_tag`.`post_id` AS `pivot_post_id`, `post_tag`.`tag_id` AS `pivot_tag_id` FROM `tags` INNER JOIN `post_tag` ON `tags`.`id` = `post_tag`.`tag_id` WHERE `post_tag`.`post_id` IN (## 这里是 posts 表查询的数据 ## ) ## 然后将第二次查询的数据按照 pivot_post_id 分组,循环一遍 posts 查询出的数据,直接按 pivot_post_id 组设置为单个 posts 的属性。 |
5
AlphaTr 2018-06-14 17:41:41 +08:00
关系型数据库一次查询返回就会出现「 N 个 Tag 的 Post 就会重复出现 N 次」这种情况。一种方式就是你说的,手动编程排重;另一种方式就是多次查询。或者可以直接上非关系型数据库;
|
6
changrui0608 OP @DavidNineRoc 多谢,查了一下午似乎是这种方法最合适,顺便 lv 全程是什么
|
7
cxbig 2018-06-14 18:17:39 +08:00 via iPhone
关键词:ORM eager loading
抓 SQL 看看人家怎么处理的就明白了 |
8
Foolt 2018-06-14 18:17:50 +08:00
MySQL 去重关键字 DISTINCT 了解一下
|
9
DavidNineRoc 2018-06-15 08:48:18 +08:00
@changrui0608 laravel
|