0

承認された最高額の助成金で評価された提案の詳細を知りたいです。クエリに問題があります。これはエラー メッセージです。ミリ秒アクセスの集計関数として指定された式「タイトル」を含まないクエリを実行しようとしました。

SELECT Proposal.ProposalID,  Proposal.Title,  Proposal.RequestedAmmount, Researcher.Name, MAX(Proposal.RequestedAmmount)
FROM Researcher, Proposal
WHERE Researcher.ResearcherID=Proposal.ResearcherIDSub
GROUP BY  Proposal.ProposalID ;

ありがとう

4

2 に答える 2

2

GROUP BYクエリでは、関数内にないすべてのパラメーターをグループ化する必要があります。したがって、あなたの場合Proposal.Title, Proposal.RequestedAmmount, Researcher.Nameもグループ化する必要があります。

SELECTandGROUP BYステートメントを再確認する必要があります。フィールドが本当に必要かどうかを確認してください - Proposal.Title, Proposal.RequestedAmmount, Researcher.Name. それらが必要な場合は、それらもグループ化する必要があります。

于 2013-04-30T06:33:32.200 に答える
0

クエリには 2 つの問題があります。

  • 構文的には、group by はすべての非集計列をリストする必要があります
  • これは内部結合です。つまり、研究者が返される提案が存在する必要があります。提案のない研究者は、MAX() 列に NULL を持つ代わりに除外されます

これらの点に対処するには、クエリを次のように変更します

  • GROUP BY 1, 2, 3, 4(SQL 標準では、列ごとのグループを式と列位置の両方で参照できます。位置はより明確で、簡単で、簡潔であることがわかります)
  • LEFT オプションを指定した最新の JOIN 構文を使用して外部結合を使用する

次のように:

SELECT
    Proposal.ProposalID,
    Proposal.Title,
    Proposal.RequestedAmmount,
    Researcher.Name,
    MAX(Proposal.RequestedAmmount)
FROM Researcher
LEFT JOIN Proposal ON Researcher.ResearcherID=Proposal.ResearcherIDSub
GROUP BY 1, 2, 3, 4;
于 2013-04-30T15:00:22.647 に答える