php - mysql选择关系两个项目

标签 php mysql tags relation

类别

id -- PK
pid -- FK to self (id), allow NULL
name
description
slug

标签

id -- PK
name
description
slug

Cat_Rel

id -- PK
pid -- FK: Post Id
cid -- FK: Category Id

Tag_Rel

id -- PK
pid -- FK: Post Id
tid -- FK: Tag Id

我需要在一个查询中得到这个结果: 行:pid |标签1,标签2,标签3 |类别1,类别5

最佳答案

我将使用两个子查询和union all来完成此操作:

select pid, max(tags), max(cats)
from ((select t.pid, group_concat(t.name) as tags, NULL as cats
       from tag_rel tr join
            tags t
            on tr.tid = .tid
       group by t.pid
      ) union all
      (select c.pid, NULL, group_concat(c.name) as cats
       from cat_rel cr join
            cats c
            on cr.cid = c.id
      )
     ) ct
group by pid;

这将确保您获得所有帖子,即使是那些没有标签和/或没有类别的帖子。

关于php - mysql选择关系两个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27213570/

相关文章:

php - 我应该把一个更大的 mysql 表分成多个吗?

mysql - 使用 SQL 查找每个司机一个月内的平均预订评分

javascript - 如何使用 mysql 数据库在 node.js 中制作登录表单

javascript - 单独计算每个列表的列表项数并追加

html - 有没有办法改变 <code> HTML 标签的宽度?

php - 为什么不能使用准备好的语句(基于 ALTER TABLE)从 PHP 设置 MySQL 字段的默认值?

php - 可以将带有 PHP 代码的 'Show MySQL Variables' 放到浏览器上吗?

php - 我们如何在mysql中更新多个表

php - Jenssegers MongoDB "like query"在 ISODate 上返回空白数组

java - jsp中如何跳过%符号?