3

選択を行う必要がある単純なテーブルがありますが、次のようにする必要があります。

テーブルの例

StatusID    StatusCode    BrandID    StatusName

1           1             1000       First Status
2           2             1000       Second Status
3           3             1000       Third Status
4           1             2000       First Custom Status

これを出力するには、BrandID = 1000 の選択クエリが必要です。

StatusID    StatusCode    BrandID    StatusName

1           1             1000       First Status
2           2             1000       Second Status
3           3             1000       Third Status

これを出力するには、BrandID = 2000 の選択クエリが必要です。

StatusID    StatusCode    BrandID    StatusName

4           1             2000       First Custom Status
2           2             1000       Second Status
3           3             1000       Third Status

つまり、BrandID がデフォルト (1000) の場合、この BrandID に属するすべての行を選択する必要がありますが、BrandID が 2000 の場合、この BrandID に属するすべての行と、BrandID 2000 がない場合はデフォルトの BrandID を持つ行を選択する必要があります。特定の StatusCode。これで十分な説明になることを願っています。これは私が取り組んできたクエリです

SELECT  *

FROM        table

GROUP BY    StatusCode
HAVING  BrandID = 2000

意図したとおりに動作しないことは明らかです。

4

2 に答える 2

1

これを試して:

SELECT * 
FROM (SELECT * FROM statusTable 
    GROUP BY StatusCode HAVING StatusCode NOT IN (SELECT StatusCode FROM statusTable WHERE BrandID = 2000)
    UNION 
    SELECT * FROM statusTable WHERE BrandID = 2000
) AS A 
ORDER BY StatusCode
于 2012-12-13T12:33:08.820 に答える
0

ここにクエリがあります

select * brandId = 1000 のテーブルから union select * brandid = 2000 のテーブルから

これにより、両方の基準に属するすべてのレコードが出力されます。

于 2012-12-13T12:14:14.313 に答える