3

私はこのフォーラムをしばらく使用して、SQL関連の質問に対する回答を見つけました。さて、私がしばらくの間理解しようとした質問をする時が来ました。

2つのテーブル(製品とソース)があります。

ソースからレコードのリストを取得し、製品から1つの追加レコード(価格の合計)を取得するSQLSELECTを作成したいと思います。私が見たいテーブルは次のようになります。

source.source_id | source.location | source.source_name | source.source_description | source.source_date | source.price | SUM(product.price)| SUM(product.price)WHERE product.quantity <1(この最後の列は私が行き詰まっているところです)。

source.locationとproduct.locationがリンクされています。

このコードは機能し、私が望む結果をもたらします:

SELECT s.source_id
    , s.location
    , s.source_name
    , s.source_description
    , s.source_date
    , s.source_price
    , p2.Total
    , sum(p1.price) as SumProductSold
FROM source s
JOIN product p1
    on s.location = p1.location
JOIN
(
    SELECT location, sum(price) as Total
    FROM product
    GROUP BY location
) p2
    on s.location = p2.location
WHERE p1.quantity < 1
GROUP BY s.source_id, s.location, s.source_name
    , s.source_description, s.source_date, s.source_price, p2.Total

ブルーフィートありがとう!

4

3 に答える 3

4

詳細があまりなくても、次のようなことができます。

SELECT s.source_id
    , s.location
    , s.source_name
    , s.source_description
    , s.source_date
    , s.price
    , sum(p.price) as SumProductPrice
    , sum(p.location) as SumProductLocation
FROM source S
JOIN product p
    on S.location = p.location
WHERE p.quantity < 1
GROUP BY s.source_id, s.location, s.source_name
    , s.source_description, s.source_date, s.price

詳細を投稿すると、クエリを微調整できます。

編集:

もう一度商品テーブルに参加して、場所の合計を取得できます。

SELECT s.source_id
    , s.location
    , s.source_name
    , s.source_description
    , s.source_date
    , s.price
    , sum(p1.price) as SumProductPrice
    , p2.Total
FROM source S
JOIN product p1
    on S.location = p1.location
JOIN
(
    SELECT location, sum(price) as Total
    FROM product
    WHERE quantity < 1
    GROUP BY location
) p2
    on S.location = p2.location
WHERE p1.quantity < 1
GROUP BY s.source_id, s.location, s.source_name
    , s.source_description, s.source_date, s.price, p2.Total
于 2012-04-04T18:28:49.247 に答える
0

テーブルの構造を完全に理解しているかどうかはわかりませんが、次のように機能するはずです。

Select source.source_id, 
  source.location, 
  source.source_name, 
  source.source_description,
  source.source_date,
  source.price,
  sum(production.location)
from source, product
  where source.location = production.location
  and location < 0
group by source.source_id, 
  source.location, 
  source.source_name, 
  source.source_description,
  source.source_date,
  source.price
于 2012-04-04T18:28:12.387 に答える
0

私が集めたものから、あなたはこのようなものが欲しいです:

SELECT  source.source_id,
        source.location,
        source.source_name,
        source.source_description,
        source.source_date,
        source.price,
        SUM(product.price) AS Price1,
        SUM(CASE WHEN product.quantity < 1 THEN product.price ELSE 0 END)  AS Price2
FROM    Source
        INNER JOIN Product
            ON Product.Location = Source.Location
GROUP BY 
        source.source_id,
        source.location,
        source.source_name,
        source.source_description,
        source.source_date,
        source.price
于 2012-04-04T19:59:40.580 に答える