certificate
とstore
の2つのテーブルがあります。 store_id
がstore_id列またはfk_store_id列にある証明書をstore
表に戻す問合せを作成する必要があります。このクエリは、person_idとstore_idでフィルタリングする必要があります。SQL Serverクエリで予期した結果が取得されない
私は既にいくつかのクエリを試してきましたが、適切な証明書を正しいストアにバインドしません。
これは私の証明書テーブルです:
STORE_ID | CERTIFICATE_ID | PERSON_ID
---------|----------------|----------
1464 | 87083 | 100258
336 | 87123 | 100258
これが私の店のテーブルです:
STORE_ID | FK_STORE_ID | STORE_DESC
---------|-------------|---------------
336 | 1464 | A First Store
1117 | 1464 | Store two
1464 | 340 | The Third
私はこのクエリを構築しました:
SELECT
S.STORE_ID
,S.FK_STORE_ID, C.STORE_ID AS CERTIFICATE_STORE_ID
,C.PERSON_ID
,CERTIFICATE_ID
FROM CERTIFICATE C
INNER JOIN STORE S ON C.STORE_ID = S.STORE_ID OR C.STORE_ID = S.FK_STORE_ID
WHERE
C.PERSON_ID = 100258
AND C.STORE_ID = 1464
このクエリでは取得しています
STORE_ID | FK_STORE_ID | STORE_ID | PERSON_ID | CERTIFICATE_ID
---------|-------------|----------|-----------|----------------
336 | 1464 | 1464 | 100258 | 87083
1117 | 1464 | 1464 | 100258 | 87083
1464 | 340 | 1464 | 100258 | 87083
テーブル構造を変更せずに、
STORE_ID | FK_STORE_ID | CERTIFICATE_STORE_ID | PERSON_ID | CERTIFICATE_ID
---------|-------------|----------------------|-----------|----------------
336 | 1464 | 336 | 100258 | 87123
1464 | 340 | 1464 | 100258 | 87083
これを取得する方法があります:
私はこれを取得することが期待しましたか?
ありがとうございました!
は、なぜあなたは1117 STORE_IDを得ることを期待していないのですか? –
あなたのデータに基づいて、 'STORE_ID'を期待していないという意味もありません。 – Stivan
また、あなたのフィルタには' CSTTI_ID = 1464'があります。これは 'CERTIFICATE_ID 87083'にのみ関連しています – mo2