我在小提琴上有以下架构
http://sqlfiddle.com/#!2/f2d785/4/0
结果表也列在那里。
如果我们观察到结果。对于mtg_ID 3. skpr_id对于每个topic_id都是重复的,并且来自与会者表的相同,每个条目都是重复的。
EXP_ID MTG_ID SPKR_ID TOPIC_ID EXPENSE
1 1 1 1 100
**2 2 2 2 100
3 2 3 2 200**
4 3 4 4 100
5 3 2 4 200
6 3 5 4 100
7 3 6 4 100
8 3 7 4 100
9 3 8 4 100
我想要以下结果
EXP_ID MTG_ID SPKR_ID TOPIC_ID EXPENSE
1 1 1 1 100
2 2 2 **2** 100
3 2 3 **3** 200
4 3 4 4 100
5 3 2 4 200
6 3 5 4 100
7 3 6 4 100
8 3 7 4 100
9 3 8 4 100
我失去了几个关节。应用group by并不能解决问题。 我希望在没有派生表的情况下在同一查询中进行重新调整。有谁可以帮助我?
答案 0 :(得分:0)
据我所知,你只想通过exp_id进行分组。
从你的小提琴中取消查询我添加了最后一行并获得了你想要的输出。
SELECT
ex.exp_id,
m.id as mtg_id,
ex.spkr_id,
xsm.topic_id,
ex.expense
FROM
expense ex
INNER JOIN meeting m ON (ex.mtg_id = m.id)
INNER JOIN mtg_spkr xsm on (m.id = xsm.mtg_id )
GROUP BY ex.exp_id
并得到了这个
| EXP_ID | MTG_ID | SPKR_ID | TOPIC_ID | EXPENSE |
|--------|--------|---------|----------|---------|
| 1 | 1 | 1 | 1 | 100 |
| 2 | 2 | 2 | 2 | 100 |
| 3 | 2 | 3 | 2 | 200 |
| 4 | 3 | 4 | 4 | 100 |
| 5 | 3 | 2 | 4 | 200 |
| 6 | 3 | 5 | 4 | 100 |
| 7 | 3 | 6 | 4 | 100 |
| 8 | 3 | 7 | 4 | 100 |
| 9 | 3 | 8 | 4 | 100 |