2017-03-16 8 views
-1

からのグループの結果は、私のSQL要求は私を与える:のmysql:リクエスト

 SELECT 
     sf_guard_user.id, sf_guard_user.username, sf_guard_user.avatar_time, fromid, toid,sum(chatMessage.fromidlu) - sum(chatMessage.toidlu) as nonlus 
     FROM chatMessage, sf_guard_user 
     WHERE (chatMessage.fromid = sf_guard_user.id AND toid=16595 AND toidhidden=0) OR (chatMessage.toid = sf_guard_user.id AND fromid=16595 AND fromidhidden=0) 
     GROUP by fromid 

enter image description here

私はこの結果に別のSQLを適用したいので、最終的な結果は、「nonlus」

に合計を作るています
SELECT id, username, avatar_time, fromid, toid, sum(nonlus) FROM 
**this request** 
order by id 

私は

SELECT id, username, avatar_time, fromid, toid, sum(nonlus) FROM (
      SELECT 
      sf_guard_user.id, sf_guard_user.username, sf_guard_user.avatar_time, fromid, toid,sum(chatMessage.fromidlu) - sum(chatMessage.toidlu) as nonlus 
      FROM chatMessage, sf_guard_user 
      WHERE (chatMessage.fromid = sf_guard_user.id AND toid=16595 AND toidhidden=0) OR (chatMessage.toid = sf_guard_user.id AND fromid=16595 AND fromidhidden=0) 
      GROUP by fromid) 
Group by id 
を試してみました

しかし、エラーが

すべての派生テーブルは、あなただけのインナーselectにエイリアスを割り当てる必要が

+0

文字通りの文字を入力最初の 'GROUP BY'の後に') 'の後ろに' a'を付けます。 – Siyual

+0

これについて何百もの質問があります。あなたは単にエラーメッセージをSOの検索ボックスに入れてみましたか? – Barmar

+0

クロス積の代わりに明示的な 'JOIN'を使うことを学ぶべきです。 – Barmar

答えて

1

独自の別名を持っている必要があります取得するには、次のことを試してください。

SELECT id, username, avatar_time, fromid, toid, sum(nonlus) FROM (
      SELECT 
      sf_guard_user.id as id, sf_guard_user.username as username, sf_guard_user.avatar_time as avatar_time, fromid, toid, sum(chatMessage.fromidlu) - sum(chatMessage.toidlu) as nonlus 
      FROM chatMessage, sf_guard_user 
      WHERE (chatMessage.fromid = sf_guard_user.id AND toid=16595 AND toidhidden=0) OR (chatMessage.toid = sf_guard_user.id AND fromid=16595 AND fromidhidden=0) 
      GROUP by fromid) a 
Group by a.id 
+0

IDでグループ化すると、selectの列ごとにグループ化されていない場合は集計が必要です。 – PeterHe

+0

@PeterこれはMySQLが許可しています。また、グループ化された列で一意に定義されている列には必要ありません。 – Barmar

+0

これはsql_modeに依存し、予期しない結果を得ることがあります。標準SQLではこれが許可されていません。 – PeterHe

関連する問題