0

別のテーブルからデータを取得するために使用する結合クエリがあります。

SELECT [THEME].[NAME], 
       [THEMETYPE].[TYPE] 
FROM   [THEME] 
       LEFT OUTER JOIN [THEMETYPE] 
                    ON [THEME].[THEMETYPEID] = [THEMETYPE].[PK_THEMETYPE] 
WHERE  COALESCE([THEME].[THEMETYPEID], 'null') LIKE '%' 
ORDER  BY CASE 
            WHEN [THEMETYPE].[TYPE] IS NULL THEN 1 
            ELSE 0 
          END, 
          [THEMETYPE].[TYPE] 

3 番目のテーブルの値が一致する場合に絞り込む機能を追加する必要があります。

Where producttheme.productid = variable-paramater-here 
AND producttheme.themeid = theme.pk_theme 

これがテーブルの写真です:

ここに画像の説明を入力

上記で 1 を選択すると、すべての [Theme].[Name] と関連付けられた [ThemeType].[Type] が返されます。ThemeId は ProductId = 1 に関連付けられています。

編集:より明確にするために、 ThemeId は Theme.Name が存在する Theme テーブルの主キーです。

4

2 に答える 2

3

これにより、いくつかのアイデアが得られます。それに応じて列名を調整してください。

SELECT [Theme].[Name], [ThemeType].[Type] 
FROM [Theme] 
Left Outer Join [ThemeType] 
ON [Theme].[ThemeTypeId] = [ThemeType].[PK_ThemeType]
join ProductTheme PT
on  PT.ProductID=ThemeType.ProductID
WHERE ProductTheme.ProductID = VARIABLE-PARAMATER-HERE AND ProductTheme.ThemeId = Theme.PK_Theme
ORDER BY [ThemeType].[Type]
于 2013-07-29T14:55:20.197 に答える
1

WHERE3 番目のテーブルを追加する前に条件が必要かどうかに応じて、次の 2 つのオプションのいずれかを試すことができます。

SELECT * 
FROM   TABLE1 T1 
       LEFT OUTER JOIN TABLE2 T2 
                    ON T1.FIELDA = T2.FIELDA 
       INNER JOIN TABLE3 T3 
               ON T1.FIELDA = T3.FIELDA 
WHERE  T1.FIELDB = 'aaa' 
       AND T3.FIELDC = 12 

また:

SELECT * 
FROM   (SELECT T1.FIELDA, 
               T2.FIELDB 
        FROM   TABLE1 T1 
               LEFT OUTER JOIN TABLE2 T2 
                            ON T1.FIELDA = T2.FIELDA 
        WHERE  T1.FIELDC = 'aaa')T3 
       INNER JOIN TABLE3 T4 
               ON T3.FIELDA = T3.FIELDA 
                  AND T4.FIELDC = 12 

これにより、何か作業ができることを願っています。

サンプルデータを提供していただければ、実際の例を設定できます。

于 2013-07-29T14:53:38.907 に答える