首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内连接的映射表创建重复项。

内连接的映射表创建重复项。
EN

Stack Overflow用户
提问于 2022-09-23 04:31:12
回答 1查看 34关注 0票数 0

我有一个程序和课程映射表。一个程序可以有多个课程。我为程序到课程表(OneToMany)创建了一个映射表。但是,当我做内在的加入,我得到的重复,这不是我所期望的。我需要过滤基于课程,如查找程序的课程名称,所以需要连接两个表。我有两个疑问

  1. 我避免使用不同的键盘重复。我需要加入以过滤课程,是否有可能避免重复使用不同的关键字,因为distinct可能会损害我的查询性能

  1. 可以在一个查询中将所有课程选择为半列,这样会造成重复。

我正在使用Java (Hibernate),所以oneToMany关系正在构建这个查询。

查询

代码语言:javascript
复制
SELECT SeqNo, pgm_id, start_date, end_date, pgm_description, location, timings
From 
PGM_DETAILS T1
INNER JOIN COURSE_DETAILS T2
ON T1.pgm_id=T2.pgm_id
WHERE T1.pgm_id=110 and T2.course_name in('C bascis','Java Basics');

期望结果

代码语言:javascript
复制
 SeqNo|pgm_id  |start_date|end_date |pgm_description|location|timings
 ---------------------------------------------------------------------
    1    |   110  | 12-Sep-22|20-Sep-22|My test PGM    | NY     |3-5 PM |C basics;Java Basics;

pgm_details

代码语言:javascript
复制
SeqNo|pgm_id  |start_date|end_date |pgm_description|location|timings
---------------------------------------------------------------------
1    |   110  | 12-Sep-22|20-Sep-22|My test PGM    | NY     |3-5 PM  
2    |   101  | 14-Oct-22|21-Oct-22|My Second      | NJ     |8-9 AM  
3    |   102  | 21-Aug-22|30-Sep-22|My JPGM        | NK     |3-5 PM  
4    |   103  | 08-Dec-22|29-Dec-22|Summer Pj      | CA     |7-8 AM
5    |   104  | 12-Sep-22|20-Sep-22|My Ny PGM      | FE     |3-5 PM  
6    |   105  | 12-Sep-22|20-Sep-22|My FE PGM      | CE     |1-5 PM  
7    |   106  | 12-Sep-22|20-Sep-22|My IN PGM      | NJ     |4-7 PM 

course_details

代码语言:javascript
复制
mapping_id | pgm_id  | course_name
-------------------------------------------
  1        | 110     | C basics
  2        | 110     | Java basics
  3        | 110     | python basics
  4        | 110     | Angular basics
  5        | 101     | PERL basics
  6        | 101     | Linux basics
  7        | 101     | Spring basics
  8        | 101     | React basics
  9        | 101     | Javascript basics
  10       | 102     | Windows basics
  11       | 102     | Linux basics
  12       | 103     | Spring basics
  13       | 104     | React basics
  14       | 105     | Javascript basics
EN

回答 1

Stack Overflow用户

发布于 2022-09-23 04:38:31

代码语言:javascript
复制
SELECT SeqNo, pgm_id, start_date, end_date, pgm_description, location, timings,
(  
   SELECT GROUP_CONCAT(mapping_id) 
   FROM COURSE_DETAILS T2
   WHERE T1.pgm_id=T2.pgm_id

) AS MappingIds
From PGM_DETAILS T1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73823008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档