2017-05-05 20 views
0

初期ページロードのストアドプロシージャを作成しているため、2つの異なるクエリと結果セットがあります。SQL Azureストアドプロシージャ複数の結果セット

最初のクエリは、2番目のクエリ内でネストされたSELECTとして完全に繰り返されます。

私の質問は、最初のクエリの結果をテーブルvarに入れるか、基本的に2番目のクエリでコード/クエリを複製するかどうかです。

ありがとうございます。

--Get Most Popular Sports for each country 
    SELECT 
     dbo.Countries2Sports.rank, 
     dbo.Countries2Sports.SportName, 
     dbo.Countries2Sports.imageURL, 
     dbo.Countries2Sports.imageALTtext 
    FROM 
     dbo.Countries2Sports 
    WHERE 
     dbo.Countries2Sports.CountryCode = @CountryCode 
    ORDER BY 
     dbo.Countries2Sports.rank ASC 

    --Get Organizations related to each country's sports 
    SELECT 
     dbo.Countries2Organizations.ID, 
     dbo.Countries2Organizations.OrganizationCode, 
     dbo.Countries2Organizations.OrganizationName, 
     dbo.Countries2Organizations.LogoURL, 
     dbo.Countries2Organizations.Sport 
    FROM 
     dbo.Countries2Organizations 
    WHERE 
     dbo.Countries2Organizations.Sport IN 
      (
       SELECT 
        dbo.Countries2Sports.SportName 
       FROM 
        dbo.Countries2Sports 
       WHERE 
        dbo.Countries2Sports.CountryCode = @CountryCode 
      ) 
     AND (dbo.Countries2Organizations.CountryCode = @CountryCode OR 
      dbo.Countries2Organizations.CountryCode = '') 
+0

あなたはのコードを共有する気にしてくださいストアドプロダクト?使用車の説明が役に立つでしょう。 –

答えて

3

あなたは出力に結果セットをしたくないなら、あなたは、レコードの数は以下のように低い場合、一時テーブルよりも良くなるCTEを使用することができます。

;WITH CTE AS (
    SELECT 
     dbo.Countries2Sports.rank, 
     dbo.Countries2Sports.SportName, 
     dbo.Countries2Sports.imageURL, 
     dbo.Countries2Sports.imageALTtext 

    FROM 
     dbo.Countries2Sports 
    WHERE 
     dbo.Countries2Sports.CountryCode = @CountryCode 
    --ORDER BY 
    -- dbo.Countries2Sports.rank ASC 
) 
--Get Organizations related to each country's sports 
SELECT 
    dbo.Countries2Organizations.ID, 
    dbo.Countries2Organizations.OrganizationCode, 
    dbo.Countries2Organizations.OrganizationName, 
    dbo.Countries2Organizations.LogoURL, 
    dbo.Countries2Organizations.Sport 
FROM 
    dbo.Countries2Organizations 
WHERE 
    dbo.Countries2Organizations.Sport IN 
     (
      SELECT 
       dbo.Countries2Sports.SportName 
      FROM 
       CTE 
     ) 
AND ( dbo.Countries2Organizations.CountryCode = @CountryCode OR dbo.Countries2Organizations.CountryCode = '') 
+0

ありがとうございます。正直言って私は別の結果セットが必要かどうかはわかりません。現在、最初の結果セットは1セットのアイコンになりますが、2番目の結果セットはWebページの全く異なるコンポーネントになります。したがって、経験の浅い私にとっては、組み合わされた結果セットは、フロントエンドが解析するための余分な作業と思われます。 。 。 –

関連する問題