mysql结果按数组排序

时间:2012-11-21 19:38:46

标签: php mysql sorting

我想我不明白'排序'是如何运作的,所以请不要评判我。我整天都在搜索。

我有一个带有actor列的电影表。一个名为“actors”的专栏。演员是由空格“”分隔的链接。链接的顺序非常重要。

我将链接分解为一个看起来像[0] - >的数组。 link0,[1] - > link1,...

我有演员表,每个演员都有电影链接。我不想进行20次不同的sql搜索,所以我创建了一个包含我想要的所有链接的变量,如下所示(WHERE actor_link = link1 OR actor_link = 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'];
}

所以,电影酒店特兰西瓦尼亚有亚当桑德勒,安迪萨姆伯格和赛琳娜戈麦斯。我的搜索显示Selena Gomez,Andy Samberg,Adam Sandler,因为这是我数据库中的订单。如何按actor数组的顺序对sql结果进行排序?谢谢!

2 个答案:

答案 0 :(得分:1)

要扩展Arjan的评论,如果你想能够实际使用演员数据(例如用它搜索),我建议至少再增加两个表。一个名为actor的actor,其名称为actorID,firstName和lastName。另一个表是铸件,其字段为castingID,actorID,movieID和castingOrder。

然后每个castID都会将一个演员链接到一个电影 - 这样可以轻松搜索特定演员所在的每部电影或特定电影中的每个演员。

castingOrder字段可用于维护所需的顺序。

答案 1 :(得分:0)

我需要您现有的代码才能真正了解正在发生的事情。

我将在您的查询中提出一个建议。而不是说WHERE actor_link = a OR actor_link = b OR actor_link = c而不是这样做:

WHERE actor_link IN (link1, link2, link3)