SQL:根据ony-to-many关系选择具有条件的对象

时间:2014-08-29 02:09:17

标签: sql relational-database one-to-many

假设我有一个Person表和一个Ball表。每个Ball都有一个color_idmark(整数),并通过Person属于person_idcolor_id类似于“红色”,“蓝色”,“绿色”等......

每个Person可以包含任意数量Ball的每种颜色(包括0):

  • ()
  • ( '红')
  • ('red','red')
  • ('red','red','green')
  • ('red','blue','green')
  • ...

这都是有效的

不,我需要:

  1. 获取Person的列表,其中至少有一个定义颜色的球,没有其他颜色
  2. 获取Person的列表,其中至少有一个定义颜色的球,没有其他颜色,平均Ball标记
  3. “一个定义颜色且没有其他颜色的球”的意思是,如果我选择“红色”和“绿色”球,我只对这些人感兴趣:

    • ('red','green')
    • ('red','green','green')
    • ('red','red','green','green','green')
    • ...

    但不是那些:

    • ()#不是红色,没有绿色
    • ('red')#No green
    • ('green')#No red
    • ('red','blue'),#No绿色,还有其他颜色
    • ('green','blue')#No red,还有其他颜色
    • ('green','red','blue')#Has other color

    我可以使用MySQL或pgsql,但如果有任何特定于供应商的解决方案,我也不介意看到它们。

    此外,应用程序用户还可以过滤单一颜色:

    • ( '红')
    • ('red','red')

    或三种或更多种颜色

0 个答案:

没有答案