有三张表abc,它们之间都是多对多的关系
业务与业务类别关系表A 字段如下: (该表主键为联合主键servicegroupindex,serviceindex)
servicegroupindex --业务类别序号
serviceindex --业务序号
serviceid --业务ID
业务类别与栏目关系表B 字段如下:(该表主键为联合主键cat_id,servicegroupindex)
cat_id --栏目序号
servicegroupindex --业务类别序号
a和b表中已经存在有记录,现在想联合表a,b来查询到某业务对应的栏目序号cat_id结果集
SQL如下:
select b.cat_id a.serviceid from B b, A a where a.servicegroupindex = b.servicegroupindex and a.serviceindex=?
但假设A和B表中已有的记录分别是下面这样: A表
servicegroupindex serviceindex serviceid
1 11 8011
2 11 8011
3 11 8011B表
cat_id servicegroupindex
100 1
200 1
100 3 这样,执行上面写的那个SQL后,条件serviceindex=11的时候,查询出的结果为:
100 8011
200 8011
100 8011这样就有2条1 A的重复记录,请人各位,针对这样的场景逻辑,想要得到下面的结果集:
100 8011
200 8011后来将SQL修正为:
select distinct b.cat_id a.serviceid from B b, A a where a.servicegroupindex = b.servicegroupindex and a.serviceindex=?
当serviceindex=11时,即可得到自己想要的结果。备注:该帖其实SQL实现都不难,主要是一个思维的问题,以前没有遇到过这样的业务逻辑(需要在两个关系表中去联合查询得到想要的结果),故在这里贴出来,刚自己测试过了,没问题。
业务与业务类别关系表A 字段如下: (该表主键为联合主键servicegroupindex,serviceindex)
servicegroupindex --业务类别序号
serviceindex --业务序号
serviceid --业务ID
业务类别与栏目关系表B 字段如下:(该表主键为联合主键cat_id,servicegroupindex)
cat_id --栏目序号
servicegroupindex --业务类别序号
a和b表中已经存在有记录,现在想联合表a,b来查询到某业务对应的栏目序号cat_id结果集
SQL如下:
select b.cat_id a.serviceid from B b, A a where a.servicegroupindex = b.servicegroupindex and a.serviceindex=?
但假设A和B表中已有的记录分别是下面这样: A表
servicegroupindex serviceindex serviceid
1 11 8011
2 11 8011
3 11 8011B表
cat_id servicegroupindex
100 1
200 1
100 3 这样,执行上面写的那个SQL后,条件serviceindex=11的时候,查询出的结果为:
100 8011
200 8011
100 8011这样就有2条1 A的重复记录,请人各位,针对这样的场景逻辑,想要得到下面的结果集:
100 8011
200 8011后来将SQL修正为:
select distinct b.cat_id a.serviceid from B b, A a where a.servicegroupindex = b.servicegroupindex and a.serviceindex=?
当serviceindex=11时,即可得到自己想要的结果。备注:该帖其实SQL实现都不难,主要是一个思维的问题,以前没有遇到过这样的业务逻辑(需要在两个关系表中去联合查询得到想要的结果),故在这里贴出来,刚自己测试过了,没问题。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货