带连接问题的mysql查询改进

时间:2014-08-12 17:28:52

标签: mysql sql

我在小提琴上有以下架构

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并不能解决问题。 我希望在没有派生表的情况下在同一查询中进行重新调整。有谁可以帮助我?

1 个答案:

答案 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 |