2016-01-12 28 views
0

我有兩個表格:一個表格用於學生列表,另一個表格用於將學生的玩具映射到學生桌面。在多個SQL表格之間進行選擇

當我選擇一個遊樂場的玩具,我希望能夠看到的 學生名單有以下限制:

  • 一個學生只能有一次一個類型的玩具。 (當我選擇足球時,有籃球的學生不能出現在名單中)。
  • 有特定玩具的學生可以有多種不同的顏色(帶有黃色籃球的學生也可以有藍色的球)。

我正在尋找寫一個SQL查詢或將錶轉換成一個C#列表,從學生的表中選擇,以便它將返回符合限制條目。我在C#中使用MVC框架,並將通過已經在功能上編寫的方法在控制器中調用查詢。

Students 
+------------+--------------+ 
| StudentId | name   | 
+------------+--------------+ 
|  1  | Bob   | 
|  2  | Samuel  | 
|  3  | Tim   | 
| ... 
+------------+--------------+ 

PlaygroundMap 
+-----+-----------------+--------+------------+ 
| id | name   | color | studentid 
+-----+-----------------+--------+------------+ 
| 1 | basket ball  | yellow | 1 
| 2 | basket ball  | blue | 1 
| 3 | tennis ball  | black | 2 
| 4 | tennis ball  | red | 2 
| 5 | soccer ball  | purple | 3 
| ... 
+-----+-----------------+--------+------------+ 

我還是新來的SQL,所以任何幫助將不勝感激。謝謝!

+3

了'SELECT'是不會來管理數據的限制。將數據放入表格時需要進行管理。 – Crowcoder

+0

「我需要一個SQL查詢」,所以你希望我們爲你做? –

+0

如何處理表格和列表?如果我將兩個表格抽取到一個列表中,我可以使用某個操作員根據PlaygroundMap表格中的ID從列表中刪除學生嗎? – JoeFromAccounting

回答

0

你將不得不在playgroundmap表中的姓名和studentid之間的數據庫級複合主鍵,在playgroundMap表

0

如何使用下面的,我認爲它符合所有的要求。

SELECT Students.name, PlaygroundMap.Name, PlaygroundMap.color 
FROM Students 
    JOIN PlaygroundMap 
     ON Students.StudentId = PlaygroundMap 
WHERE Students.StudentID <> (
SELECT Students.StudentID 
FROM Students 
    JOIN PlaygroundMap 
     ON Students.StudentId = PlaygroundMap 
WHERE COUNT(PlaygroundMap.name) 
GROUP BY PlaygroundMap.Name) 
+0

感謝您的建議,我會仔細研究一下。 – JoeFromAccounting

0
select * from student 
where StudentId NOT IN 
    (select distinct StudentId from PlaygroundMap) 
or StudentId IN 
    (select distinct StudentId from PlaygroundMap where PlaygroundMapName = @playground) 
相關問題