在多个sql表之间进行选择

时间:2016-01-12 16:40:33

标签: c# mysql sql select multiple-tables

我有两张桌子:一张用于学生列表,另一张用于映射学生用一些游乐场玩具。

当我选择一个游乐场玩具时,我希望能够看到一个列表 学生有以下限制:

  • 学生一次只能拥有一种玩具。 (当我选择足球时,有篮球的学生不能出现在名单中)。
  • 有特定玩具的学生可以有多种不同的颜色(有黄色篮球的学生也可以有蓝色球)。

我希望编写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 个答案:

答案 0 :(得分:0)

你必须在playgroundmap表中为在playgroundMap表中的name和studentid之间的数据库级别创建一个复合主键

答案 1 :(得分: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)

答案 2 :(得分:0)

var image = document.getElementById("image");
image.onclick = function(e) {
  window.alert("Something");
  window.location.href = "www.anotherwebpage.com";
}