0

私はSQLの第一人者ではありません。そのため、皆さんに質問しています。

私はこのストアドプロシージャを持っています:

USE [groep2_festivals]
GO
/****** Object:  StoredProcedure [dbo].[GetGroupsNotOfFestival]    Script Date: 15-05-13 10:03:17 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      Robbie Vercammen
-- Create date: 2013-05-15
-- Description: Getting all groups not on a defined festival
-- =============================================
ALTER PROCEDURE [dbo].[GetGroupsNotOfFestival]
    @festId  nvarchar(4)
AS
BEGIN
    SELECT DISTINCT b.*, p.* 
    FROM bands b 
    JOIN bandsperfestival bpf ON b.band_id = bpf.band_id 
    JOIN podia p ON p.pod_id = bpf.pod_id
    WHERE bpf.fest_id != @festId
END

そして、これらのテーブル、バンド:

バンドテーブル

Podia (ステージは英語で):

ステージ表

フェスティバルに出演するすべてのバンドを開催する BandsPerFestival:

フェスティバルで演奏するすべてのバンドのテーブル

このストアド プロシージャを使用して、特定のフェスティバル (フェスティバル ID) ですべてのバンドが演奏するようにしましたが、これは機能しますが、これを逆にしたいのですが、単純に置き換えるだけWHERE bpf.fest_id = @festIdWHERE bpf.fest_id != @festIdは機能しないようです。同じリストを取得しますが、実際にフェスティバルに出演するバンドは 2 回返されます。

例:

何が間違っているかの例

ご覧のとおり、ニッケルバックは、選択したフェスティバルに実際に出演しているときに、リストに 2 回表示されます。

どんな助けでも大歓迎です。

編集: 先に言っておくべきだったのですが、特定のフェスティバルに出演していないすべてのバンドが必要です。

4

2 に答える 2

0

これを「反転」と言うときの意味を説明する必要があります。どのフェスにも出演していないバンドをすべて欲しいということですか?または、特定のフェスティバルに出演していないすべてのバンド?

于 2013-05-20T17:57:37.567 に答える