5

みんな私はこれを尋ねる方法を知りません、私はちょうどPHPとMysqlを学び始めました、そして私は私がかなり簡単だと思う何かをするのに多くの問題を抱えています。

MysqlActorsとMoviesに2つのテーブルがあるとしましょう。

俳優にはIDと名前があり、映画にも同じIDと名前があります。

この例では、俳優が1人のブラッド・ピット、2人のエドワード・ノートン、3人のジャック・ニコルソンであるとしましょう。

映画は1ファイトクラブと2オーシャンズ13です。

ブラッド・ピットとエドワード・ノートンはファイト・クラブに所属し、ブラッド・ピットはオーシャンズ13に所属し、ジャック・ニコルソンはこれらの映画のいずれにも出演していません。

俳優をMysqlデータベースの映画にリンクするにはどうすればよいですか。また、PHPを使用して俳優を表示するにはどうすればよいですか。

私は本当にどんな助けにも感謝します、iamはこれで本当に失われました!注目してくれてありがとう!

4

4 に答える 4

3

これに使用できますJOINS

簡単なイントロで、別のテーブルを作成しましょうrelations。その中で、映画と俳優は関連しています。両方のPRIMARY KEY組み合わせになりますID

Actors Table
+----+----------------+
| ID |           NAME |
+----+----------------+
|  1 |      Brad Pitt |
|  2 |  Edward Norton |
|  3 | Jack Nicholson |
+----+----------------+

Movies Table
+----+--------------------+
| ID |               NAME |
+----+--------------------+
|  1 |         Fight Club |
|  2 | Ocean''s Thirteen. |
+----+--------------------+

これで、これら2つのIDを持つ関係テーブルを作成できます。

+-------+-------+
| MOVIE | ACTOR |
+-------+-------+
|     1 |     1 |
|     1 |     2 |
|     2 |     1 |
+-------+-------+

このように、Movie1にはアクター1と2の両方が含まれます。

SQLクエリ

CREATE TABLE Actors (`id` int, `name` varchar(255));

INSERT INTO Actors (`id`, `name`) VALUES
(1, 'Brad Pitt'),
(2, 'Edward Norton'),
(3, 'Jack Nicholson');

CREATE TABLE Movies (`id` int, `name` varchar(255));

INSERT INTO Movies (`id`, `name`) VALUES
(1, 'Fight Club'),
(2, 'Ocean''''s Thirteen.');

CREATE TABLE stars (`movie` int, `actor` int);

INSERT INTO RelationShip (`movie`, `actor`) VALUES
(1, 1),
(1, 2),
(2, 1);
于 2012-12-05T18:32:10.877 に答える
1

この場合、多対多の関係があります。つまり、1人の俳優が多くの映画に出演し、1つの映画に多くの俳優が出演する可能性があります。

この場合に行うことは、中間テーブルを生成することです。たとえば、「MOVIE_ACTOR」には2つの列MOVIE_IDとACTOR_IDが必要です。

これは始めるのに良いポイントです

たとえば、俳優のすべての映画を知りたい場合は、次のようにクエリを実行します。

SELECT movies.name FROM movie_actor LEFT JOIN movies ON movie_actor.movie_id = movies.id
WHERE movie_actor.actor_id = (SELECT id FROM actors WHERE name = 'brad pitt')

テーブルCREATETABLEMOVIE_ACTOR(movie_idint、actor_idint);を作成する方法は次のとおりです。

INSERT INTO MOVIE_ACTOR (`movie`, `actor`) VALUES
(1, 1),
(1, 2),
(2, 1),
(2, 2);

幸運を!

于 2012-12-05T18:35:42.133 に答える
0

結合テーブルが必要です、ActorMovieMatch

このテーブルには、他のテーブルの主キーIDへの外部キーである2つのフィールドActorIDとがあります。MovieID

データベースを更新するときは、他のテーブルとは関係なく、このテーブルを更新します。

于 2012-12-05T18:33:08.693 に答える
0

まず、テーブル構造を設定する必要があります。これがあなたのために働くかもしれないものです。読みやすくするために、図の形でそれらを持っています。そのすべてのためにMySQLステートメントを作成する必要があります。

まず、テーブルタイプ:

Movie = ID,Title
Actor = ID,FirstName,LastName
StarredIn = ActorID,MovieID

次に、テーブルの値:

Movie
------------------
1|Fight Club
2|Ocean's Thirteen

Actor
-------------------
1|Brad|Pitt
2|Edward|Norton
3|Jack|Nicholson

StarredIn
---------
1|1
2|1

StarredInで接続されているエンティティのIDを単純に挿入する方法に注目してください。これが関係システムの核心です。IDで接続された、テーブル全体に分散されたデータ。これにより、必要な回数だけアクターを配置できます。また、名前の変更などからも保護します。ある日、ブラッドピットが名前を変更したいと判断した場合でも、IDは同じエンティティを指します(アクターテーブルを変更するだけです)。

また、必須ではありませんが、重複を追加しないように主キーが必要です。MovieとActorの両方のIDの主キーと、StarredInの複合主キー(ActorID、MovieID)をお勧めします。

PHPの部分については; PHPをMySQLに接続する方法を説明しているので、mysqliまたはPDOのいずれかを読むことをお勧めします。始めるためのリンクは次のとおりです。

Mysqli: http: //php.net/manual/en/book.mysqli.php

PDO: http: //php.net/manual/en/book.pdo.php

于 2012-12-05T18:33:14.200 に答える