【问题标题】:SELECT from table based on COUNT in SQLSQL 中基于 COUNT 从表中选择
【发布时间】:2013-10-21 08:46:27
【问题描述】:

我有四张桌子:

  PAINTING            GALLERY             ARTIST              PAINTED
- PAINTING_TITLE    - GALLERY_ID        - ARTIST_ID         - PAINTED_CODE
- PAINTING_ID       - GALLERY_NAME      - ARTIST_LAST       - ARTIST_ID
                                        - ARTIST_FIRST      - PAINTING_ID

PAINTED 表会记录每位艺术家绘制的画作。有些画是由不止一位艺术家绘制的。我想返回两位艺术家绘制的画作列表。

SELECT
    PAINTING.PAINTING_TITLE AS TITLE, 
    GALLERY.GALLERY_NAME AS GALLERY
FROM
    PAINTING,
    GALLERY,
    PAINTED
WHERE
        PAINTING.GALLERY_ID = GALLERY.GALLERY_ID
    AND
        PAINTING.PAINTING_ID = PAINTED.PAINTING_ID
GROUP BY
    PAINTING.PAINTING_TITLE,
    GALLERY.GALLERY_NAME
HAVING
    COUNT(PAINTED.ARTIST_ID) = 2

这可行,但结果中不包含艺术家的姓名。我需要将每位艺术家的姓名与画廊名称和艺术品名称一起列出,每个名称都会出现两次,但会出现一次不同的艺术家。

我正在使用 Access SQL。

【问题讨论】:

    标签: sql ms-access count group-by having


    【解决方案1】:

    使用这个:

    SELECT
        PAINTING.PAINTING_TITLE AS TITLE, 
        GALLERY.GALLERY_NAME AS GALLERY,
        ARTIST.ARTIST_FIRST & " " & ARTIST.ARTIST_LAST
    FROM
        PAINTING,
        GALLERY,
        PAINTED,
        ARTIST,
    WHERE
            PAINTING.GALLERY_ID = GALLERY.GALLERY_ID
        AND
            PAINTING.PAINTING_ID = PAINTED.PAINTING_ID
        AND
            ARTIST.ARTIST_ID = PAINTED.ARTIST_ID
    GROUP BY
        PAINTING.PAINTING_TITLE,
        GALLERY.GALLERY_NAME
    HAVING
        COUNT(PAINTED.ARTIST_ID) = 2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-11
      • 2013-02-02
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多