2016-11-12 90 views
-1

下面的MySQL查詢應該列出相關的顯示日期,時間,以及電影「蝙蝠俠」將在展示劇院的容量。重複的結果,涉及三個表

select distinct s.Date "Showing Date", s.Time "Showing Time", t.Capacity "capacity" 
from CustomerShowing cs, Showing s, Movie m, Theatre t 
where cs.SID = s.SID and s.MID = m.MID and s.RN = t.RN and m.Name = 'Batman'; 

的結果如下:

02-11-2016 12:35:00 17  
02-11-2016 09:30:00 5  
02-11-2016 09:30:00 5 //the second result repeated..  
02-11-2016 09:30:00 5 //and repeated again..  
02-11-2016 09:30:00 5 //etc..  
02-11-2016 09:30:00 5 

時,他們應該是

02-11-2016 12:35:00 17 
02-11-2016 09:30:00 5 

編輯:請注意,在使用不同的查詢時很好,我的意思是沒有使用不同的(!!!)

+0

您可以通過使用組。檢查以下查詢。 –

+0

沒有數據集的結果集就像沒有棒棒糖的棒。見http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query – Strawberry

回答

0

這裏的問題是,你正在對所有表進行交叉連接,因此你得到重複。使用內連接

select distinct s.Date "Showing Date", s.Time "Showing Time",  t.Capacity "capacity" 
from CustomerShowing cs 
join Showing s on cs.SID = s.ID 
join Movie m on s.MID = m.MID 
join Theatre t on s.RN = t.RN 
where m.Name = 'Batman'; 
+0

我仍然得到相同的結果,我只是意識到我發佈了一個版本的查詢使用distinct,所以顯然結果將正確地有兩行。我不認爲這將與不同的數據集一致。我現在無法真正改變這個問題,但我的文章中的原始查詢與您發佈的查詢結果相同。發生問題時,將不同的部分帶走。 – AppreciateIt

0

這將解決您的問題。這裏使用了一對一的關係。

select distinct s.Date as 'Showing Date', s.Time as 'Showing Time', t.Capacity 
as 'capacity' from CustomerShowing cs INNER JOIN Showing s ON cs.SID = s.SID 
INNER JOIN Movie m ON s.MID = m.MID INNER JOIN Theatre t ON s.RN = t.RN WHERE 
m.Name = 'Batman'; 

除非

select s.Date "Showing Date", s.Time "Showing Time", t.Capacity "capacity" 
from CustomerShowing cs, Showing s, Movie m, Theatre t 
where cs.SID = s.SID and s.MID = m.MID and s.RN = t.RN and m.Name = 'Batman' 
group by s.Date,s.Time,t.Capacity 
+0

這將工作沒有不同。因爲這裏使用了一對一的關係。 –

+0

我更新了查詢請檢查。 –