0

私は「並べ替え」がどのように機能するかを理解していないと思うので、私を判断しないでください。本当に一日中探しました。

私は俳優の列を持つ映画テーブルを持っています。「俳優」という名前のコラム。アクターは、スペース " " で区切られたリンクです。リンクの順序は非常に重要です。

[0]-> link0、[1]-> link1、...のような配列にリンクを展開します。

すべての俳優にも映画のリンクがある俳優テーブルがあります。20 の異なる SQL 検索を行いたくないので、このように必要なすべてのリンクを含む変数を作成しました ( WHERE actor_link= actor_linklink1 OR = link2 OR .. )

問題はこれです。検索ではおそらく最初にlink7が見つかるため、私のソートはなくなりました。映画のテーブルからその順序を維持するにはどうすればよいですか。データベースの順序ではなく、映画の人気順に俳優を表示したいと考えています。

「x」SQL検索を行わずにアクターを検索し、順序を維持する別の方法を教えてください。

$actors[] = explode(" ", $row['actors_link']); 
$x=0;
$actors2 = '';
while ($actors[0][$x]) {
  $actors2 = $actors2 . "`link_imdb_actor` = " . "'".$actors[0][$x]."' OR ";
  $x++;
}
$actors2 = substr($actors2, 0, -3);

$sql = "SELECT * FROM `actors` WHERE $actors2";
$sql_result = mysql_query($sql) or die(" ");
while ($row3 = mysql_fetch_array($sql_result)) {
  echo $row3['link_imdb_actor'];
}

映画『ホテル・トランシルヴァニア』には、アダム・サンドラー、アンディ・サムバーグ、セレーナ・ゴメスが出演しています。私の検索では、セレーナ ゴメス、アンディ サムバーグ、アダム サンドラーが表示されます。これは私のデータベースからの注文だからです。アクター配列の順序でSQL結果をソートするにはどうすればよいですか? ありがとうございました!

4

2 に答える 2

1

Arjan のコメントを拡張するために、実際にアクター データを使用できるようにしたい場合 (検索など)、少なくとも 2 つのテーブルを追加することをお勧めします。1 つは、actorID、firstName、および lastName フィールドを持つアクターと呼ばれます。もう 1 つのテーブルは、castingID、actorID、movieID、castingOrder フィールドを持つキャスティングになります。

次に、各 castID が俳優を映画にリンクします。これにより、特定の俳優が出演したすべての映画、または特定の映画のすべての俳優を簡単に検索できます。

castOrder フィールドは、必要な順序を維持するために使用できます。

于 2012-11-21T20:23:54.037 に答える
0

何が起こっているのかを実際に理解するには、既存のコードが必要です。

私はあなたの質問で一つの提案をします。WHEREactor_link = a ORactor_link = b ORactor_link = cと言う代わりに、次のようにします。

WHERE actor_link IN (link1, link2, link3)
于 2012-11-21T19:43:24.970 に答える