2014-02-21 101 views
0

我是SQL初學者,我需要幫助才能獲得針對此情況的解決方案。以條件計數的SQL語句

對於每個景點,輸出的人訪問該景點的數量在2013年

create table visitor( 
visitID   char(n), 
name   char(n) not null, 
primary key (visitID) 
); 

create table ticket(
ticketID  char(n), 
ticketType  char(n), 
day    int(n), 
month   char(n), 
year   int(n), 
seasonID  char(n), 
visitID   char(n), 
primary key (ticketID), foreign key (seasonID) references seasonPerClass, foreign  
key (visitID) references visitor 
); 

create table attractionVisit(
attractionID  char(n), 
ticketID  char(n), 
foreign key (attractionID) references attraction, foreign key (ticketID) references  
ticket 
); 

create table attraction(
attractionID  char(n), 
attractionName char(n) not null, 
primary key (attractionID) 
); 

我無法測試我的代碼,但到目前爲止,我有

SELECT AttractionName, count(distinct VisitID) 
FROM (Visitation NATURAL JOIN AttractionVisit) 
WHERE year = 2013; 

我不知道這是否正確。請幫忙。

+1

你有什麼rdbms?這些(n)到處都是?有任何樣本數據? – Alexander

+0

你在哪個表中存儲年份? – Rohaan

+1

我沒有看到名稱爲'Visitation'的表格 –

回答

0

您在您的查詢需要group by

SELECT AttractionName, count(distinct VisitID) 
FROM (Visitation NATURAL JOIN AttractionVisit) 
GROUP BY AttractionName 
WHERE year = 2013; 
0
select att.attractionName, count(att.attractionId) as count 
from visitor v inner join ticket t on (v.visitID = t.visitID) 
inner join attractionVisit av on (t.ticketID = av.ticketID) 
inner join attraction att on (av.attractionID = att.attractionID) 
where t.year = 2013 
group by att.attractionName` 

希望這是幫助。