2013-11-15 169 views
1

我有兩個表格,一個是包含ID和點的'點'。另一個表是'名稱',包含ID,Forename和Surname。在SQL中使用兩個SELECT語句?

我正在嘗試搜索帶有姓氏安妮和布朗姓氏的人得分的總數。

我需要加入嗎?如果是這樣,這是正確的嗎?

SELECT Name.Forename, Name.Surname 
    FROM Name 
    FULL OUTER JOIN Points 
    ON Name.ID=Points.ID 
    ORDER BY Name.Forename; 

但是,我也有加分,所以我將不得不使用:

SELECT SUM (`points`) FROM Points 

然後還有的WHERE語句,以便它僅僅查找這個名字的人:

WHERE `Forename`="Anne" OR `Surname`="Brown"; 

那麼這一切是如何結合在一起的(基於假設你做了這樣的事情)?

回答

1

因此,首先,你的回答:

select sum(points) as Points 
from 
Points 
inner join Name on Name.ID = Points.ID 
where 
Name.Forename ='Anne' and Name.SurName='Brown' 

其次,FULL連接是壞的,因爲他們把所有的值從兩組即使是那些沒有火柴。如果您只想返回符合條件的值(A & B),則必須使用INNER JOIN。第二,這裏是MySQL reference documentation on SQL statement syntax。請考慮閱讀並至少熟悉JOIN,聚合(包括GROUP BY和HAVING),WHERE子句,UNION,一些提供的基本功能以及可能的子查詢等基礎知識。在這些方面擁有良好的基礎可以讓您通過大多數MySQL查詢的99%。

5
SELECT Name.ID, Forename, Surname, SUM(Points) 
FROM Name 
INNER JOIN Points ON Name.ID = Points.ID 
/* Optional WHERE clause: 
WHERE Name.ForeName = 'Anne' AND Name.Surname='Brown' 
*/ 
GROUP BY Name.ID, Name.Forename, Name.Surname 
0

你可以用子查詢這樣寫。

SELECT Name.Forename, Name.Surname, Name.ID, 
(SELECT SUM (`points`) FROM Points where Points.ID = Name.ID) as total_points 
    FROM Name ORDER BY Name.Forename; 

但是,我想指出,看起來您的表格鏈接不正確。我不能完全確定沒有看到表格,但我想它應該在哪裏points.userid = name.id