2016-08-23 23 views
0

でJOINステートメント私は、MySQLデータベースのバージョン5.6.17
を使用していると私は
SELECT文でMySQLの

  1. ユーザー
    • ID
    • 以下のテーブルを持っていますユーザ名
  2. シリーズ
    • imdbID
  3. エピソード
    • imdbID
    • シーズン
    • エピソード
    • imdbVotes
    • seriesID
    • タイプ
  4. MarkTypeは
    • ID
    • タイプ
  5. 別名試験(serieswatchlist)
    • ID
    • ユーザーID
    • EPID
    • markid


ご注意:は、私は、次のデータ(すべてのユーザーデータ、すべてのエピソードデータは、すべての系列データを抽出するために管理し、質問長
を減らすために、各テーブルの列のほとんどが削除されていません次のSQLコード

SELECT e.*, u.username, s.* 
FROM test w 
INNER JOIN users u 
ON u.ID = w.userid 
INNER JOIN episode e 
ON w.epid = e.imdbID 
INNER JOIN series s 
ON e.seriesID = s.imdbID 
WHERE e.seriesID IN (SELECT (imdbID) FROM series) 
AND w.userid = 1 

を使用しますが、私は、私は、各シリーズから取得したい
そのSQL文の結果に別の操作をしたい)それが最大の季節の数とベロ最大エピソード番号ですそのシリーズからその季節にSQL文を使用しています。
これまでのコードの前にコードを書こうとするたびに、エラーが返ってきました。UPDATE 1
は私のコードの周りにGROUP BYを試してみましたが、それは

ここ が変更されたコード

SELECT MAX(e.season) FROM 
(SELECT e.seriesID, u.username, e.imdbID AS "episodeID" 
FROM test w 
INNER JOIN users u 
ON u.ID = w.userid 
INNER JOIN episode e 
ON w.epid = e.imdbID 
INNER JOIN series s 
ON e.seriesID = s.imdbID 
WHERE e.seriesID IN (SELECT (imdbID) FROM series) 
AND w.userid = 1) 
GROUP BY seriesID 

である「すべての派生テーブルは、独自の別名を持っていなければなりません」エラーが発生しましたUPDATE 2: は以下

SELECT MAX(x.season), max(x.episode) FROM 
(SELECT e.seriesID, u.username, e.imdbID AS "episodeID", e.season, e.episode 
FROM test w 
INNER JOIN users u 
ON u.ID = w.userid 
INNER JOIN episode e 
ON w.epid = e.imdbID 
INNER JOIN series s 
ON e.seriesID = s.imdbID 
WHERE e.seriesID IN (SELECT (imdbID) FROM series) 
AND w.userid = 1) as x 
GROUP BY x.seriesID 
にエラーを修正するためのコードを変更しました

それは

select ... 
from (the subuery) <alias_name> 
group by <alias_name>.some_field 

例えばなければならない(サブクエリなど)FROMセクションの既存のクエリ問題なく

+0

になりますか?何?それはどのように機能するのですか? – Strawberry

+1

問題を最小限に抑えます。たとえば、質問から削除できる重要性のない列が非常に多くあります。 – jarlh

+0

@Strawberryはまだその機能に取り組んでいますが、その価値はテキストです(例:john doe、my x、miss y) – hamada147

答えて

1

配置作業とGROUP BY必要と集計関数を

を適用しますエイリアス名はsub