0

ここでは、SQL ビューを使用する簡単な問題があります。現時点ではそれを理解できないようです。

  • TableA と TableB の 2 つのテーブルがあります。
  • TableA の FieldA と TableB の FieldB を取得したいと考えています。
  • 2 つのテーブルは、INNER JOIN を使用してリンクされています。
  • TableA.FieldA が異なる行のみが必要です。
  • 返される値は、TableB.FieldB の上位 10 項目である必要があります。

単純に SELECT DISTINCT を使用すると、2 つのフィールドの組み合わせを使用して区別を決定しているように見えます。

何か案は?

以下は、現在すべての行を返す SQL のモックです。

SELECT dbo.TableA.FieldA, dbo.TableB.FieldB
FROM dbo.TableA INNER JOIN dbo.TableB ON dbo.TableA.ID = dbo.TableB.TableAID

この標準クエリから返されるデータの例は次のとおりです。

FieldA  FieldB
John    78
John    21
Claire  18
Sam     16
John    25
Claire  48
Paul    53

クエリから返されたものを探しているのは次のとおりです。

John    78
Paul    53
Claire  48
Sam     16

**物事を少し明確にし、不足している情報を含めるように編集しました。

4

3 に答える 3

1

あなたの答えに基づいて、あなたがやろうとしていることはこれだと思います:

TableB の FieldB を合計し、TableA と結合します。

SELECT   TableA.FieldA,
         tmp.SUMFieldB
FROM     TableA
         INNER JOIN
                  (SELECT  TableAID,
                           SUM(FieldB) AS SUMFieldB
                  FROM     TableB
                  GROUP BY FieldA
                  ORDER BY SUMFieldB DESC
                  ) AS tmp
         ON       TableA.ID = tmp.TableAID
ORDER BY tmp.SUMFieldB DESC
于 2009-03-08T04:34:21.543 に答える
1

結合に基づいて、テーブル b のフィールド A に 2 つの異なる値がある場合、どちらを使用するかをどのように判断しますか?

これを試すことはできますが、必要な b 値が選択されない場合があります

SELECT dbo.TableA.FieldA, max(dbo.TableB.FieldA)
FROM dbo.TableA INNER JOIN dbo.TableB ON dbo.TableA.SomeID = dbo.TableB.SomeID
GROUP BY dbo.TableA.FieldA
于 2009-03-06T14:50:03.607 に答える
0

これはどう?

SELECT TableA.FieldA,
       tmp.FieldB
FROM   TableA
       INNER JOIN
              (SELECT  TableAID,
                       FieldB
              FROM     TableB
              GROUP BY FieldA
              ORDER BY FieldB DESC
              ) AS tmp
       ON     TableA.ID = tmp.TableAID
ORDER BY tmp.FieldB DESC
于 2009-03-06T15:34:25.217 に答える