2016-10-12 1 views
0

私は現在PHPでmySQLを使用しています。私の仕事は、特定の検索から出てくる各映画のすべての俳優をリストすることです。検索と結果は正常に動作します。しかし、私は結果の表示を変更する必要があります。上記のコードではどのように各映画のタイトルを1回だけ表示できますか?

$sql = "SELECT f.title, a.first_name, a.last_name 
    FROM film as f, actor as a, film_actor as fa 
    WHERE (f.title LIKE \"%$filter%\") 
    AND fa.actor_id = a.actor_id 
    AND f.film_id = fa.film_id 
    ORDER BY f.title;"; 

$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
echo "The following movies match the filter value: &quot$filter&quot." . "</strong>" . 
    "</div>\n<br><br>\n"; 

// output data of each row 
while(($row = $result->fetch_assoc())) { 
    echo 
    $row["title"] . " " . "stars" . " " . 
    $row["first_name"] . " " . 
    $row["last_name"] . 
    "</div>\n" . 
    "<br>\n"; 
} 
} else { 
echo "0 results"; 
} 

、私はこれを取得しています:

「次の映画は、フィルタ値と一致: "チョコを"

BUTTERFLYのCHOCOLATの星NICK STALLONE
BUTTERFLY CHOCOLATはMENAを主演TEMPLE
CHOCOLATはKIM ALLENを主演 BUTTERFLY
CHOCOLATはLISA MONROE
BUTTERFLYのCHOCOLATの星EDギネスを主演 BUTTERFLY BUTTERFLY CHOCOLATの星BURT TEMPLE
BUTTERFLYのCHOCOLATの星MARYカイテル
はCHOCOLAT HARRYはJOEスワンクの主演
CHOCOLAT HARRYの星は

すると「...クロフォード
CHOCOLAT HARRYはKIRKジョヴォヴィッチ
... を主演RIP

BUTTERFLY CHOCOLATの星EDギネス、MARYカイテル、LISA MONROE、NICKスタローン、バート・TEMPLE、MENA TEMPLE

:私はこれを取得する必要があります3210

CHOCOLATE HARRYの星は、私はDISTINCT SELECTしようとしたが、それが唯一のそれはより複雑になります

CRAWFORD、JANE JACKMAN、 ... を... RIP。

+2

にループを修正し、その後フィルム& GROUP BYにする必要がありますが機能 "BY GROUP" SQLのを見てみましょう。 http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat – arkascha

答えて

1

あなたは

$sql = "SELECT f.title, group_concat(concat(a.first_name, " ", a.last_name)) ActorNames 
FROM film as f, actor as a, film_actor as fa 
WHERE (f.title LIKE \"%$filter%\") 
AND fa.actor_id = a.actor_id 
AND f.film_id = fa.film_id 
GROUP BY f.title 
ORDER BY f.title;"; 

Group_Concat機能を使用して

while(($row = $result->fetch_assoc())) { 
echo 
$row["title"] . " " . "stars" . " " . 
$row["ActorNames"] . " " . 
"</div>\n" . 
"<br>\n"; 
0

結果を映画名でグループ化する必要があります。 'Group By'句をの前に、の前に 'Order By'句を使用してください。

関連する問題