4つのテーブル結合。各キャンペーンの結果ではなく、各企業に1つの応答のみが提供されます。

StackOverflow https://stackoverflow.com/questions/1407359

  •  05-07-2019
  •  | 
  •  

質問

ご協力ありがとうございます!

serverFiles全体にアップロードされたすべてのcompanyNameエントリを次のように出力したい

companies.companyName-count(files.fileID)-sum(serverFiles.uniqueUploads)

Initech Ltd.   -  11 -  24931
Epiphyte  Inc.  -  23  - 938821

ここに私のテーブル構造の関連部分があります:

表:企業

companyID (INT)  -  companyName (TEXT)

表:キャンペーン

campaignID(INT)  -  companyID (INT)

表:ファイル

fileID (INT)  -  campaignID (INT)

表:serverFiles     serverFileID(INT)-fileID(INT)-uniqueUploads(INT)

各企業は複数のキャンペーンを持つことができます。

各キャンペーンには複数のファイルを含めることができます。

各ファイルには複数のserverFilesを含めることができます

使用しようとしたクエリは次のとおりです。

SELECT companies.companyName, sum(serverFiles.uniqueUploads), count(files.fileID)
FROM companies
INNER JOIN campaigns on companies.companyID = campaigns.companyID
INNER JOIN files on files.campaign = campaigns.campaignID
LEFT OUTER JOIN serverFiles on serverfiles.fileID = files.fileID
GROUP BY serverFiles.uniqueUploads, files.fileID
ORDER BY sum(serverFiles.uniqueUploads) DESC;

ただし、これは各会社に対して複数のエントリを返します(会社ごとに複数の出力を作成するため-会社のキャンペーンごとに1つ)。

eg:

companies.companyName-count(files.fileID)-sum(serverFiles.uniqueUploads)

Initech Ltd.   -  2 -  234234     (for initech campaign1)
Initech Ltd.   -  4 -  223323    (for initech campaign2)
Epiphyte  Inc.  -  13  - 6434   (for epiphyte campaign1)
Initech Ltd.   -  1 -  554     (for initech campaign3)
Epiphyte  Inc.  -  13  - 7544   (for epiphyte campaign2)
Epiphyte  Inc.  -  11  - 74545   (for epiphyte campaign3)
Epiphyte  Inc.  -  23  - 456544   (for epiphyte campaign4)

クエリを変更して、各企業に対して1つの応答のみを返し、その企業のすべてのキャンペーンを要約するにはどうすればよいですか。

ご協力いただきありがとうございます。

役に立ちましたか?

解決

GROUP BY句を除き、クエリは問題ないと思います。

GROUP BY companies.companyName

他のヒント

グループに会社名を追加し、MIN / MAXを実行して選択リストから会社名を取得します。

SELECT MAX(companies.companyName), sum(serverFiles.uniqueUploads), count(files.fileID)
FROM companies
INNER JOIN campaigns on companies.companyID = campaigns.companyID
INNER JOIN files on files.campaign = campaigns.campaignID
LEFT OUTER JOIN serverFiles on serverfiles.fileID = files.fileID
GROUP BY companies.companyName, serverFiles.uniqueUploads, files.fileID
ORDER BY sum(serverFiles.uniqueUploads) DESC;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top