私は2つのテーブルを持っていると私はどんな役割は、表の各映画カウント複数の項目 - mysqlの
例に現れる回数をカウントする必要があります。
作品私がどのように見えるの出力を取得したいと思い表
TITLE MOVIEID OTHER STUFF....
------------- -------
MOVIE TITLE 1 ID# 1
MOVIE TITLE 2 ID# 2
MOVIE TITLE 3 ID# 3
ETC...
ロールテーブル
ROLEID MOVIEID OTHER STUFF....
------- -------
ROLE #1 ID# 1
ROLE #2 ID# 1
ROLE #3 ID# 2
ROLE #4 ID# 2
ROLE #5 ID# 3
ROLE #6 ID# 4
ROLE #7 ID# 5
ROLE #8 ID# 3
ETC....
この:
TITLE NUMROLES
------------- --------------------------------------
MOVIE TITLE 1 COUNT (ROLE.MOVIEID) FOR MOVIE TITLE 1
MOVIE TITLE 2 COUNT (ROLE.MOVIEID) FOR MOVIE TITLE 2
MOVIE TITLE 3 COUNT (ROLE.MOVIEID) FOR MOVIE TITLE 3
MOVIE TITLE 4 COUNT (ROLE.MOVIEID) FOR MOVIE TITLE 4
MOVIE TITLE 5 COUNT (ROLE.MOVIEID) FOR MOVIE TITLE 5
ETC...
私は、いくつかの異なるものを試してみましたが、私はいつも個別にカウントされるのではなく、それらのすべてのロールの合計数を取得するように見えます。
私の「最高の」出力例:私は、私はこのケースで使用すべきかの適切な知識を持っていない考えています
mysql> SELECT TITLE, COUNT(ROLE.MOVIEID) AS NUMROLES
-> FROM MOVIE, ROLE
-> GROUP BY TITLE;
+-----------------------------+----------+
| TITLE | NUMROLES |
+-----------------------------+----------+
| Amadeus | 138 |
| Apollo 13 | 138 |
| Batman | 138 |
| Batman & Robin | 138 |
| Batman Begins | 138 |
| Batman Forever | 138 |
| Batman Returns | 138 |
| Casablanca | 138 |
| Dirty Harry | 138 |
| Few Good Men, A | 138 |
| Field of Dreams | 138 |
| Fly, The | 138 |
| Forrest Gump | 138 |
| Godfather, The | 138 |
| Gone with the Wind | 138 |
| Jerry Maguire | 138 |
| Mrs. Doubtfire | 138 |
| Naked City, The | 138 |
| Sixth Sense, The | 138 |
| Sudden Impact | 138 |
| Terminator 2: Judgment Day | 138 |
| Terminator, The | 138 |
| Tootsie | 138 |
| Wizard of Oz, The | 138 |
+-----------------------------+----------+
24 rows in set (0.02 sec)
、誰もがちょうど与えることなく正しい方向に私を指すことができます私は答え??
ボーナス:
私も(ROLE.MOVIEID)のカウントに少なくとも6を持っていない任意のタイトルをフィルタリングする必要がある - 私はそのためにHAVING使用する必要があります考えています。
助けてくれてありがとう、私はある種の参加をする必要があるとはかなり確信していました。ある時点で左結合を試みましたが、間違っていました。 – programmingnovice
@programmingnovice NP、あなたの質問にすべての詳細を含めてくれてありがとう。デフォルトでは 'JOIN'は' INNER JOIN'です。つまり、結果は両方のテーブルの一致のみに限定されます。 Ex。ロールのないムービーがある場合、上記のJOINには戻りません。 'LEFT JOIN'は 'left'テーブル(ムービー)のすべての行を保持し、 'right'テーブル(ロール)に存在しない値については' NULL'を表示します。この場合、通常は 'INNER JOIN'または' JOIN'が必要ですが、あなたが見たいと思う役割のない映画があれば、 'LEFT JOIN'が必要です。 –
@programmingnoviceこれは、ジョインの良い、簡単なイメージです。https://www.codeproject.com/KB/database/Visual_SQL_Joins/Visual_SQL_JOINS_orig.jpg –