2011-06-24 14 views
0

私はムービーを整理するためにデータベースを使っています。私は2つのテーブルを持っています(1つは俳優向けの映画用です)。それをシンプルに置くとstar1は、例えば、「モーガン・フリーマン」であるが、他の映画の「モーガン・フリーマンは、」フィールドstar星である映画がありますmySQL JOIN列と1つのテーブルで別々にカウントし、他のテーブルの値を増やす

Table MOVIE: 
    id_movie | name_movie | star1 | star2 | star3 | runtime 

Table ACTOR: 
    id_actor | name | sex | image 

この練習のために役に立たないフィールドを省略すること。

私はテーブルMOVIEからのUNIONの値をstar1、star2、star3から数えたいと思っています。そして、俳優/女優のセックスとイメージをテーブルACTORで手に入れてください。

はすでにこれまでのクエリのすべての種類が、何もありませんが試してみました:(

を誰もがこの1で私を助けることができますか?

答えて

0

あなたがあるNAMEフィールドを使用してACTORに参加しているように見えます奇妙なビットは - 理想的に、あなたはACTOR_IDを使用して参加したいと思いますが、とにかく、以下のクエリは、これらの仮定の下であなたが欲しいものを行う必要があります。必要以外...

select name, sex, image 
from actor 
where name in 
(select star1 as star from movie 
union 
select star2 as star from movie 
union 
select star3 as star from movie) 
+0

ありがとう!私のために十分にシンプルなようだ! :)私はあなたのクエリを使用しましたが、それは俳優だけを挙げました:Morgan Freeman | M | 123.jpg ... star1 star2とstar3のSUMに彼の名前が表示された回数もカウントしたかったのですが、これは可能なメイトですか? –

1

@Tomグリーンのソリューションは非常に近いです " DISTINCT "を問い合わせます。

しかし、明確な俳優は、すでに役者の一意である必要があることを、直接、そのからクエリを俳優のテーブルを持っているにかかわらず、それらがで特集された映画の女優。

しかし、あなたは明確な俳優を知りたいと思った場合には/他の人と同じ映画にいた女優たちは、実際にあなたのデータベース構造をより柔軟な構造に調整して、 "ブリッジ"や "リンク"テーブルを使って必要なだけ多くの "星" 、ここであなたをMovieActor表を移入するために多くの関係

Table MOVIE: 
    id_movie | name_movie | star1 | star2 | star3 | runtime 


Table MovieActor: 
    id_movieactor | id_movie | id_actor (star) 

Table ACTOR: 
    id_actor | name | sex | image 

可能性が...

insert into MovieActor (id_movie, id_actor) 
    select id_movie, star1 as id_actor 
     from movie 
     where star1 > 0 
    union 
    select id_movie, star2 as id_actor 
     from movie 
     where star2 > 0 
    union 
    select id_movie, star3 as id_actor 
     from movie 
     where star3 > 0 

この方法では、ムービーあたりの星の数に制限はありませんが、他のものの無駄なスペースを最小限に抑えることができます...次に、可能なものを追加することでクエリを調整しますこれが行われたら、あなたはクエリのタイプのいくつかの他の例を持っていた場合などの簡単な

select distinct ma.id_actor, actor.* 
    from MovieActor ma join Actor on ma.id_actor = actor.id_actor 

としてどのように多くのクエリあなたが調整される映画に第四星...とにかく

は、あなたが照会することができますあなたのデータベースから出ようとしているかもしれませんが、私は簡単に補足的なクエリを提供することができます...

+0

@Tom Greenと@DRapp:お返事ありがとうございます!私はとても速く答えを得るだろうと想像してはいけません!! DBの構造が最善ではなかったことを知っています。私はこの機会に皆さんに教えてくれるようにして、より柔軟な第3のMovieActorを構築しています。私は3人の俳優だけを許すのはちょっとした欠陥だと知っていますが、それは物事を単純化すると思った数字でした。 @DRapp:新しいテーブルにそのクエリを設定しようとしましたが、0行が挿入されました:|また、私のオリジナルのアイデアは、俳優や女優ごとに映画のトップ10を示していた...私はその場所で新しいテーブルでそれをやるだろうか?とにかく...ありがとう! :) –

+0

@Afonso Gomes、私はちょうど3テーブルの構造を作成し、挿入を実行...それは失敗しました...私は思い出しました... "id_MovieActor"を "自動インクリメント"カラムにする必要がありました。トップ10の映画については、ランクの目的のために「トップ」の映画を構成するものは何か...定量化するためのここのものは何もありません。 – DRapp

+0

@DRapp:たぶん私は「小さな」細部を忘れました。 –

関連する問題