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

转载 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



java多線程導入不同csv文件到不同表1

  • 2013年09月11日 14:51
  • 568KB
  • 下载

sql when case 根据不同 case 查询不同关联表信息

sql case when
  • tengdazhang770960436
  • tengdazhang770960436
  • 2016年07月13日 20:42
  • 2668

mysql两表关联但是关联字段类型不一致

今天做项目时发现了一个问题,业务表与字典表关联,发现查询出的结果有重复值,如下图所示: 首先,我们先看下业务表数据,就一条记录,如下图: 再看下字典表数据,如下图: 两表关联,查询...
  • yanchenbin88
  • yanchenbin88
  • 2017年10月23日 17:21
  • 253

根据表字段值left join 不同的表

首先说下思路吧,网上找了,大概两种方法: 1.在left join 的后面将两张表union all连接为一张表,并加上“区分表关键字”,然后根据“区分表关键字”筛选我们需要的数据 2.使用两个l...
  • KH717586350
  • KH717586350
  • 2017年12月27日 10:35
  • 162

Union all的使用实现一条sql把不同表里面的数据查出来,或者按照不同的查询条件查出来的sql累加起来

Union all的使用实现一条sql把不同表里面的数据查出来,或者按照不同的查询条件查出来的sql累加起来,如果不用union all我们只能通过程序去实现,而且需要多次和数据库的交互查询,效率低。...
  • javaecrainbow
  • javaecrainbow
  • 2013年07月27日 23:48
  • 4907

SQL根据表中某列队值选择关联不同的表

1.我们有表1,表2,表3,需要根据表1中某字段的值的不同分别与表2表3关联 表1结构为: Table1   字段:id    based_num     aid             1...
  • xwdpepsi
  • xwdpepsi
  • 2012年03月15日 10:05
  • 1492

mysql 一个表内根据字段对应值不同查询统计总数

SELECT count(*), sum(case when identify_type=01 then 1 else 0 end ), sum(case when identify_type=02...
  • zy846771221
  • zy846771221
  • 2017年03月03日 16:53
  • 4179

同表两个字段二选一查询mysql中如何判断某一个字段是否存在某一个值

可以用 select count(*) from table where username ='dpstill'; 查询的结果=0 就不存在 >0 就存在 如果要用其他结果返回的话,可以用下面的 ...
  • qq_22062405
  • qq_22062405
  • 2017年12月11日 10:04
  • 257

【mysql】根据不同条件查询表中同一字段

需求:需要在一张表中,查询某个店铺05-17和05-10两天的同一个GMV字段数据遇到问题:在测试过程中发现,如果两天中任意一天没有数据,则该店铺整体数据均不显示解决代码:SELECT a.S...
  • xuexiiphone
  • xuexiiphone
  • 2017年05月17日 12:58
  • 1781

SQL多表查询和查询一个表中某字段值相同的数据

多表查询,查询表中某字段值相同的数据
  • sunhuwh
  • sunhuwh
  • 2016年07月13日 15:42
  • 7773
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:根据字段不同值关联查询不同表的问题
举报原因:
原因补充:

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