0

データベース テーブルに対して検索クエリを実行したいと考えています。これは私のテーブルの例です。

movies
--------------------------
ID (INT) | TITLE (VARCHAR)
--------------------------

actors
-------------------------
ID (INT) | NAME (VARCHAR)
-------------------------

directors
-------------------------
ID (INT) | NAME (VARCHAR)
-------------------------

ma
------------------------------------
ID (INT) | MOVIE (INT) | ACTOR (INT)
------------------------------------

md
---------------------------------------
ID (INT) | MOVIE (INT) | DIRECTOR (INT)
---------------------------------------

で検索したいmoviestitleactorsnamedirectorsnameいくつかのキーワードに基づいています。maテーブルにはmovieを参照するフィールドがありますmovie。およびを参照するidフィールド。等々。で結果グループを表示したい。. 問題は、テーブルに基づいて実行する方法と、テーブルに基づいてテーブルを参照する方法がわからないことです。文法について申し訳ありません。この質問に価値があると思われる場合は、編集できます。actoractoridmovieiddirectorsactorsmamdmovies

それで、何か考えはありますか?

4

1 に答える 1

0

これ一つで全てが手に入る

SELECT m.title, a.name AS actor, d.name AS director 
FROM movies m
INNER JOIN ma ON (ma.movie_id = m.id)
INNER JOIN actors a ON (a.id = ma.actor_id)
INNER JOIN md ON (md.movie_id = m.id)
INNER JOIN directors d ON (d.id = md.director_id)
ORDER BY m.title

これはあなたが映画でグループ化したものです

SELECT m.title, GROUP_CONCAT(a.name) AS actorS, GROUP_CONCAT(d.name) AS directors
FROM movies m
INNER JOIN ma ON (ma.movie_id = m.id)
INNER JOIN actors a ON (a.id = ma.actor_id)
INNER JOIN md ON (md.movie_id = m.id)
INNER JOIN directors d ON (d.id = md.director_id)
GROUP BY m.id
ORDER BY m.title

[編集]

善のために.. WHERE を追加するだけです

... WHERE m.title LIKE 'KEYWORD%' OR a.name LIKE 'KEYWORD%' OR d.name LIKE 'KEYWORD%'

于 2013-05-24T05:05:18.017 に答える