2014-09-05 138 views
0

嘿,我試圖找出那些在co72010講座中同時開始的事件。我不知道如何去做這件事,我必須做一個INNER JOINGROUP BY在其中一個字段中查找具有相同值的SQL記錄

events 

id   modle kind  dow tod duration  room 
co12004.L01 co12004 L Wednesday 11:00  1 cr.SMH 
co12004.L02 co12004 L Monday 17:00  1 cr.B13 
co12004.T01 co12004 T Monday 11:00  2 co.G78+G82 
co12004.T02 co12004 T Tuesday 15:00  2 co.B7 
co12004.T03 co12004 T Tuesday 13:00  2 co.G78+G82 
+0

我沒有看到任何在任何領域有co72010的東西。在那裏,這很容易。 – Siyual 2014-09-05 14:21:33

+0

哈哈它不是記錄的整個列表...:P – Richard 2014-09-05 14:27:29

+0

在你的問題中陳述一個價值的觀點是幫助其他人試圖找到一種方法來幫助你。這些信息是無用的,除非你向社區展示正確的價值觀,以便人們最好地理解你所說的話,以避免@Siyual這樣的評論,他們實際上是正確的。 – 2014-09-05 14:36:26

回答

1

您可以使用Exists。也許是這樣的:

Select E.* 
From Events E 
Where Exists 
(
    Select 1 
    From Events O 
    Where O.dow = E.dow 
    And  O.tod = E.tod 
    And  O.modle = 'co72010' 
) 

或者,你可以使用一個Join還有:

Select E.* 
From Events E 
Join Events O On O.Dow = E.Dow 
        And O.Tod = E.Tod 
Where O.Modle = 'co72010' 
+0

這似乎正在帶回所有,但co7210的結果? – Richard 2014-09-05 14:47:44

+0

@Richard如果你還想'co7210'行,刪除連接條件'And O.id <> E.id' – Bohemian 2014-09-05 15:02:22

+0

啊,不知道你是否想要co72010的結果。我更新了查詢。 – Siyual 2014-09-05 15:02:36

1
Select E.* 
From event E 
Where Exists 
(
    Select 1 
    From event O 
    Where O.dow = E.dow 
    And  O.tod = E.tod 
    And  O.modle = 'co72010' 
) and E.modle != 'co72010' 

因此,它並沒有表現出同樣模塊,只有那些在的那些同時co72010,但不是它本身?

0
SELECT a.id, a.modle, a.dow, a.tod, b.id, b.modle, b.dow, b.tod 
FROM event a JOIN event b on (a.dow=b.dow AND a.tod=b.tod) 
WHERE a.modle = 'co72010' AND b.modle != 'co72010' 
+1

歡迎來到StackOverflow,提供一個關於爲什麼這是正確的解決方案的上下文會有所幫助。 – jessehouwing 2016-01-01 18:47:59

相關問題