我有一些預訂數據從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