我想将一个表中的行分配给另一表中的行,这在SQL oracle中可以采用相等数量
技术问答
160 人阅读
|
0 人回复
|
2023-09-12
|
我正在尝试编写一个SQL查询,该查询会将记录从一个表分发到另一个表,该表的数目相同。
6 ? h" ^. Z' L8 \在此示例中,我有两个表Students和Teachers,我想将学生分配给每个老师。
3 m0 }7 p+ v6 B, M4 e. p+ i学生:(Adam,Bennet,Elmer,Justin,Louis,Noah,Jack)
, H/ ~# E7 L3 m- M9 {老师:(Leo,Kyle,Ethan)( |2 p: b% b6 _9 J$ ?
注意:
4 o" ?$ s# T8 t' ^* z[ol]一个学生最多只能有一位老师& n: k1 D% d/ Z, ?9 ^% v
每位老师的学生人数应与其他老师的人数相同… / l9 f5 `: z8 C3 H( P
…除非学生人数不是教师人数的确切倍数,否则在这种情况下,必须尽可能平均地在教师之间平均分配学生
2 ]5 L% W- K6 t8 P' a3 }[/ol]3 c' J# \* b4 ?/ O, v
例如,如果我们有七个学生和三个老师,则前两个老师将带两个学生,最后一个将带三个学生。
9 O2 Z. |' v8 S" W! e结果:
( J: {3 @6 H; ~! [1 U1 RStudent | Teacher9 D1 H9 h0 K; B9 j! q% s3 b
--------+--------
" q% K1 D4 ^! I9 G3 r# o- UAdam | Leo
# G* d1 `1 J+ k( W$ B6 {Bennet | Leo$ `. d) ~ [* M
Elmer | Kyle7 a& i* _0 C x
Justin | Kyle
# [* R1 K7 _. D0 hLouis | Ethan1 ~+ q. P3 a& }! d! ] f, j3 f. n/ \
Noah | Ethan% q& Z- t$ b2 B3 M3 z/ k
Jack | Ethan+ f( \- [ R, x+ P' D2 ^+ M
如何在Oracle SQL中做到这一点?
# }6 x# ^5 h6 x/ X0 {( _$ Z( D' i也:如果我要增加课程,并且学生必须在不同的强迫下有不同的老师…结果:
) X8 G2 N( p, N2 l JStudent | Teacher | coerces
- Q+ y, j: Y4 b1 T$ s--------+---------+---------' q3 F1 q4 [4 g. I1 M. ^0 H
Adam | Leo | 1
8 w$ D! E! H5 f+ DBennet | Leo | 1& m/ ~5 h y. r: i$ r" C$ ^4 T, z
Elmer | Kyle | 1' d) `# `8 [# B# o. z: y- ~& @1 }
Justin | Kyle | 13 R7 Q9 d4 `9 S0 D" ]7 @/ _/ m
Louis | Ethan | 1
# B7 L4 u) P5 b: s0 C: B! HNoah | Ethan | 1
3 e& X. S4 H( W# p+ aJack | Ethan | 1
[- L/ O/ Z. P; e# l3 eLouis | Leo | 2
( ~' W+ E5 @1 \- s- t9 N1 v. RNoah | Leo | 2
, F- r8 ], Q% w9 [4 \0 a2 K7 i1 rJack | Kyle | 2* B' p! G9 n; X8 _' f
Adam | Kyle | 27 B3 q7 h) e0 l% I; _* y
Bennet | Ethan | 2; Q: s+ j4 [( e
Elmer | Ethan | 2
$ K' i* u2 {# W, o: w3 Z. Z' d" y: tJustin | Ethan | 2
0 L- b/ D% N3 i' R) G
8 ~/ ]0 w- q* k4 A: ]/ r3 M6 d我该怎么办?2 h8 l) ?+ Z2 m1 L& Y/ i
' `9 F: u; g E, u; P( N
解决方案: |
|
|
|
|
|