0

1960 年代生まれではないメンバーを持つすべてのアーティストの名前を検索するクエリと、1960 年代生まれのメンバーを持たないすべてのアーティストの名前を検索する別のクエリを作成するとします。

つまり、これら 3 つのテーブルについて話しているのです。

アーティスト

ArtistID, ArtistName, Region, EntryDate

メンバー

MemberId, Firstname, Lastname, Birthday

Aritsts テーブルと Member テーブルの関係は、XrefArtistsMembers テーブルです。

XrefArtistsMembers

MemberId, ArtistID, RespParty

私はクエリを開始しました:

select salesid, firstname, lastname, birthday 
from members 
where year(birthday) >= 1970 or year(birthday) < 1960;

しかし、最初のクエリの結果には表示されたが、2 番目のクエリの結果には表示されなかったアーティストの場合はどうなるでしょうか?

4

3 に答える 3

0

それぞれ、IN または NOT IN 条件で実行できます。

-- Artists with NO members born in the 60s

SELECT * FROM Artists
WHERE ArtistID NOT IN (
    SELECT ArtistID 
    FROM XrefArtistsMembers x
    INNER JOIN Members m ON x.MemberId = m.MemberID
    WHERE year(birthday) BETWEEN 1960 AND 1969)

-- Artists with ANY member NOT born in the 60s

SELECT * FROM Artists
WHERE ArtistID IN (
    SELECT ArtistID 
     FROM XrefArtistsMembers x
    INNER JOIN Members m ON x.MemberId = m.MemberID
    WHERE year(birthday) NOT BETWEEN 1960 AND 1969
)
于 2013-10-23T21:33:39.043 に答える
0

質問はコードを探しているようには見えません。質問は:

しかし、最初のクエリの結果には表示されたが、2 番目のクエリの結果には表示されなかったアーティストの場合はどうなるでしょうか?

したがって、最初のクエリは、1960 年生まれではない SOME メンバーを持つすべてのアーティストを取得します。2 番目のクエリは、1960 年生まれのメンバーを持たないすべてのアーティストを取得します。 1960年生まれの全員(ではない)。

于 2013-10-23T21:44:35.877 に答える