2012-11-21 5 views
0

'정렬'이 작동하는 방식을 이해할 수 없다고 생각하므로 제발 판단하지 마십시오. 나는 정말로 하루 종일 수색했다.mysql 결과가 배열로 정렬

나는 액터 열이있는 영화 테이블이 있습니다. 컬럼은 "배우"라고 불립니다. 액터는 공간 ""으로 구분 된 링크입니다. 링크의 순서는 매우 중요합니다.

나는 [0]과 같은 배열로의 링크를 폭발 -> 사용자 메뉴얼, [1] -> 링크 1, ...

내가 모든 배우가 또한 영화 링크의이 배우의 테이블이 있습니다. 20 개의 서로 다른 sql 검색을하고 싶지 않아서 원하는 모든 링크가있는 변수를 만들었습니다. (예 : actor_link = link1 또는 actor_link = link2 또는 ..)

문제는이 점입니다. 검색은 아마 첫 번째 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']; 
} 

영화 호텔 트랜 실 배 니아에는 Adam Sandler, Andy Samberg 및 Selena Gomez가 있습니다. 내 검색 결과 Selena Gomez, Andy Samberg, Adam Sandler가 내 데이터베이스의 주문이기 때문에 표시됩니다. 액터 배열의 순서에 따라 SQL 결과를 정렬하려면 어떻게합니까? 고맙습니다!

+1

우리는 약간의 코드를 봐야 할 것입니다. 매우 혼란 스럽습니다. – Nathan

+1

데이터베이스 설정이 잘못되었습니다. 항목을 쿼리 할 수있게하려면 한 열에 두 개 이상의 항목을 넣으면 안됩니다. – Arjan

+0

Arjan, 영화 제목이 300,000 개이고 배우가 500,000 명인 경우 1000 명의 사용자가 데이터베이스를 쿼리 할 때 서버가 작동하는 방식을 상상해보십시오. – acerluc

답변

0

실제로 무슨 일이 일어나고 있는지 요지를 파악하려면 기존 코드가 필요합니다.

귀하의 질문에 하나의 제안을하겠습니다. 대신 말하는 WHERE actor_link = A 또는 actor_link = B 또는 actor_link = 대신 이렇게 C :

WHERE actor_link IN (link1, link2, link3) 
1

실제로 배우 데이터를 사용할 수 있도록하려면 (함께 검색 등), Arjan의 의견을 확장하려면 적어도 두 개 이상의 테이블을 추천합니다. 하나는 actorID, firstName 및 lastName 필드가있는 액터를 호출했습니다. 다른 테이블은 castingID, actorID, movieID 및 castingOrder 필드가있는 캐스트입니다.

각 castingID는 액터를 영화에 연결합니다. 이는 특정 액터가 있던 모든 영화 또는 특정 영화의 모든 액터를 쉽게 검색 할 수있게합니다.

castingOrder 필드는 원하는 순서를 유지하는 데 사용할 수 있습니다.

+0

액터 테이블이 이미 존재하므로 캐스팅 테이블 만 필요합니다. 또는 actor_id와 movie_id를 연결하는 다른 테이블. – Arjan