如何从单个表中提取具有“共享”外键的条目

时间:2019-04-24 14:47:35

标签: sql oracle

比方说,我有一个名为Color_Size_Rel的表,看起来像这样

 Color_Size_ID           Color                Size
        1                Blue                  L 
        2                Blue                  M
        3                Green                 L
        4                Purple                L
        5                Pink                  XL
        6                White                 S
        7                Blue                  L

要提取相同大小的颜色/颜色数的查询是什么?预期的结果集如下:

Blue
Green
Purple

我尝试了以下方法都没有用(我真的很困,不知道该怎么做):

     select color
       from color_size_rel
      where size = size;

谢谢。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用<MuiThemeProvider theme={innerTheme}> <ListItems itemsList={secondItem}/> </MuiThemeProvider> 子查询来实现。

查询1

exists

Results

SELECT DISTINCT t1.color
FROM Color_Size_Rel t1
WHERE exists (
    SELECT 1
    FROM Color_Size_Rel tt
    WHERE t1.Size = tt.Size
    HAVING COUNT(*) > 1
)

答案 1 :(得分:1)

这应该可以解决问题:

WITH color_size_rel AS (SELECT 1 color_size_id, 'Blue' color, 'L' "SIZE" FROM dual UNION ALL
                        SELECT 2 color_size_id, 'Blue' color, 'M' "SIZE" FROM dual UNION ALL
                        SELECT 3 color_size_id, 'Green' color, 'L' "SIZE" FROM dual UNION ALL
                        SELECT 4 color_size_id, 'Purple' color, 'L' "SIZE" FROM dual UNION ALL
                        SELECT 5 color_size_id, 'Pink' color, 'XL' "SIZE" FROM dual UNION ALL
                        SELECT 6 color_size_id, 'White' color, 'S' "SIZE" FROM dual UNION ALL
                        SELECT 6 color_size_id, 'Orange' color, 'S' "SIZE" FROM dual UNION ALL
                        SELECT 7 color_size_id, 'Blue' color, 'L' "SIZE" FROM dual)
SELECT "SIZE", color
FROM   (SELECT DISTINCT "SIZE",
                        color,
                        COUNT(DISTINCT color) OVER (PARTITION BY "SIZE") cnt
        FROM   color_size_rel)
WHERE  cnt > 1
ORDER BY "SIZE", color;

SIZE COLOR
---- ------
L    Blue
L    Green
L    Purple
S    Orange
S    White

(我在尺寸“ S”中添加了一种额外的颜色,以在有多种颜色且一种以上的颜色时显示输出。)

这将找到每种尺寸的不同颜色的计数,然后区分结果集,因此,如果每种尺寸中存在重复的颜色,则仅报告一种。最后,我们过滤结果以显示计数大于1的尺寸。

请不要使用size作为列名-这是一个保留字,因此为什么每次引用它时都必须使用双引号。

答案 2 :(得分:0)

从colour_size_rel中选择不同的颜色,其中size = size