我有一些预订数据从MySQL的一对视图。它们完美地匹配列,主要区别在于放置在这些行之一中的预订代码。MySQL联盟(或类似的)查询
背景如下:这是用于计算运动营的数字。人们被预订,但可以做额外的活动。
查看1:所有专业预订(说:足球课)。
查看2:一般群体。
由于旧的软件,预订过程导致许多人为普通组预订,然后升级到老班。业务中其他地方的某些事情使情况更加复杂。
要清楚 - 视图1实际上包含一些(但不是全部)视图2中的人员。这两个组有交集。很明显,人们不能一次进入两个小组(只有一个小组!)。
发现是谁在查看2所有的人当然是很容易的......因为是查看1。但是,我需要出示了一份报告,基本上是:
- “视图1”改写“视图2 ” ......或者换句话说:
- ‘视图1’[排序]联盟‘查看2’
不过:我不知道这样做的最好的办法,因为有增加的并发症:
每一行都是ap近因(省略其他的东西)如下:
User ID Timeslot Activity
1 A Football
1 A General
2 A General
3 A Football
正如你所看到的,这些行所有关心时隙答: - 用户2不一般的活动。 - 用户3做足球。 - 用户1做足球和一般。
由于这些项目不是唯一的,上面是UNION(不同),因为没有真正不同的行。
我需要的输出如下:
User ID Timeslot Activity
1 A Football
2 A General
3 A Football
在这里,足球采取“优先”在“一般”,因此我得到的,人们在任何时候的图片。
此UNION在许多字段上有明显的子句,但忽略其他字段。
所以说:没有人知道如何做什么金额为:
- “添加两个表连接在一起,并覆盖它们中的一个,如果是相同的时隙”
或者类似的东西一:
“- ”在UNION DISTINCT上选择性不同“。
干杯 里克
不幸的是,我被禁止使用'group by'而没有聚合函数:它实际上不是SQL中的预期行为。 看到我以前的问题: http://stackoverflow.com/questions/15966530/mysql-edge-case-use-of-group-by – elb98rm