8

SQLite の 1 つのクエリで複数の select ステートメントを実行することは可能ですか?

そのような:

SELECT ( 
           SELECT ChestGemEffects.Value,
                  Effect.Name
             FROM ChestGemEffects
                  INNER JOIN Effect
                          ON ChestGemEffects.EffectId = Effect.Id
                  INNER JOIN Gems
                          ON ChestGemEffects.GemId = Gems.Id
            WHERE ( Gems.[Key] = 'SG1' )  
       ) 
       AS ChestEffects,
       ( 
           SELECT WeaponGemEffects.Value,
                  Effect.Name
             FROM WeaponGemEffects
                  INNER JOIN Effect
                          ON WeaponGemEffects.EffectId = Effect.Id
                  INNER JOIN Gems
                          ON WeaponGemEffects.GemId = Gems.Id
            WHERE ( Gems.[Key] = 'SG1' )  
       ) 
       AS WeaponEffects,
       ( 
           SELECT OthersGemEffects.Value,
                  Effect.Name
             FROM OthersGemEffects
                  INNER JOIN Effect
                          ON OthersGemEffects.EffectId = Effect.Id
                  INNER JOIN Gems
                          ON OthersGemEffects.GemId = Gems.Id
            WHERE ( Gems.[Key] = 'SG1' )  
       ) 
       AS OthersEffects;

エラーが表示されます:

「クエリの実行中にエラーが発生しました: 式の一部である SELECT に対して許可される結果は 1 つだけです」

私の式に何か問題がありますか、それとも SQLite でサポートされていないだけですか?

ありがとう

4

1 に答える 1

23

サブクエリの結果をソース テーブルとして使用して、さらにクエリを実行するには、次のFROM句を使用する必要があります。

SELECT * FROM (SELECT ...), (SELECT ...)

ただし、これはcross joinになり、必要なものではありません。

複数のテーブル (列数が同じ) を追加するには、UNION ALLを使用します。

SELECT ChestGemEffects.Value,
       Effect.Name
  FROM ...
  ...
UNION ALL
SELECT WeaponGemEffects.Value,
       Effect.Name
  FROM ...
  ...
于 2013-03-06T17:34:20.220 に答える