我有一个程序和课程映射表。一个程序可以有多个课程。我为程序到课程表(OneToMany)创建了一个映射表。但是,当我做内在的加入,我得到的重复,这不是我所期望的。我需要过滤基于课程,如查找程序的课程名称,所以需要连接两个表。我有两个疑问
。
。
我正在使用Java (Hibernate),所以oneToMany关系正在构建这个查询。
查询
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');期望结果
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
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
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发布于 2022-09-23 04:38:31
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 T1https://stackoverflow.com/questions/73823008
复制相似问题