根据字段不同值关联查询不同表的问题

转载 2016年08月29日 15:32:29

我有四个表:前三个分别为活动表(activity),博客表(blog)和课程表(course),表结构基本一样,都是发表内容的,有title和content字段,第四个表为动态表(dynamic),当用户参加活动,发表博客和学习课程的时候,都会在动态表中进行记录,动态表中有type字段表示此条记录是用户什么行为(活动,博客,课程),itemid字段表示此条记录的行为在他们自己表中的id,如type=1,itemid=2就表示活动表中id为2的记录在动态表中留下的记录,

现在我要显示用户动态列表,根据type字段去取不同表中的title和content字段 ,用case when不太会用,想讨教一下:

我是这么写的:

select d.id,d.uid,d.createtime,

case 

  when d.type==1 then //活动

   select a.title,a.content from activity a where  a.id=d.itemid

 when d.type==2 then //博客

 select b.title,b.content from blog b where b.id=d.itemid;

where d.type=3  then //课程

 select c.title,c.content from course c where c.id=d.itemid

from  dynamic d 




 我喜欢这样写

select d.id,d.uid,d.createtime, 
    case  
       when d.type==1 then //活动 
         a.title,a.content 
       when d.type==2 then //博客 
         b.title,b.content
       where d.type=3  then //课程 
         c.title,c.content
    end 
from  dynamic d  
left join  activity  a
on  a.id=d.itemid 
left join  blog b
on   b.id=d.itemid
left join  course c
on  c.id=d.itemid

http://www.oschina.net/question/147939_128410?sort=time



相关文章推荐

[实例] 简单搞定联合查询注入字段间编码不同无法显示内容问题

作者:YoCo Smart 来自:习科信息技术 Silic Group http://blackbap.org 注入的时候往往能碰到这样一种情况:有显示位,但是无法显示内容,甚至连databas...

MYSQL条件查询--字段A不同值的state为0,1,9的数量统计

select COACH_NAME,sum(case when STATE=0 then 1 else 0 end) as '0',    sum(case when STATE = 1 then 1...
  • Strck5
  • Strck5
  • 2016年09月26日 17:17
  • 1676

mysql 批量修改表中字段数据成不同的值 用一个表更新另一个表的方法

最近在工作的时候突然想到了一个问题,就是mysql如何才能实现批量更新多条记录的同一个字段为不同值,发现其中的学问还是挺多的,所以就把网上总结下来分享给大家,有需要的朋友们可以参考借鉴,下面来一起看看...

thinkphp中两张表中不同字段的相同值——之if的判定

1.首先:列出两张表 2.我们要达到的操作是:循环表lbxz_user里的所有数据,如果lbxz_user里的name字段的值等于lbxz_member表里的mb_name字段值得任...

数据库---多表查询、关联查询、不同情况下数据库表设计

本篇博客知识点 1.三种简单的关联方式:左关联、右关联、内联 2.实例演示多表查询和关联查询 3.1对1数据库表设计、1对多数据库表设计、多对多数据库表设计三种关联方式:左关联、右关联、内...

亿万数据量级mongoDB中高效查找同一字段的所有不同值集合

亿万数据量级mongoDB中高效查找同一字段的所有不同值集合

Mongodb的亿万级数据集合中提取字段的所有不同值集合

对于互联网公司来说,随着业务的不断发展,后台保存的各种数据也会越来越多,在这篇文章中,简单讲述一下自己在工作过程中遇到的一个小的统计需求工作,希望对有需要的人有所帮助。 需求:需要统计我们后台数据库(...

C#不同类型的成员变量(字段)的默认值

创建类的一个实例时,在执行构造函数之前,如果你没有给成员变量赋初始值,C#编译器缺省将每一个成员变量初始化为他的默认值。 如果变量是方法的局部变量,编译器就会认为在使用该变量之前,代码必须给它显...
  • md521
  • md521
  • 2011年11月10日 14:49
  • 1780

mysql批量更新多条记录的同一字段为不同值

mysql更新数据的某个字段,一般这样写:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';也可以这样用in...
  • zaxzdqd
  • zaxzdqd
  • 2017年05月12日 15:45
  • 188
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:根据字段不同值关联查询不同表的问题
举报原因:
原因补充:

(最多只允许输入30个字)