私はCF/SQLで非常に簡単なことをしようとしていますが、私が間違っていることを理解できないようです。 ColdFusionでSQL結合に問題がある
私はこれらのテーブルを持っている:movies genres actors moviesGenres moviesActors
------ ------ ------ ------------ ------------
movieId genreId actorId id id
title name fname movie movie
lname genre actor
私は各映画のジャンルと、単純にすべてのムービーを一覧表示し、クエリ、(複数選択可能)と各映画の俳優を書くしようとしている(再び、複数選択可能) 。
ジャンルを含むようにクエリを書き込むと、すべて正常に動作します。私は、クエリ自体のために、movieIdでグルーピングしてから、ジャンルごとに別々に使用します。
しかし、私が俳優を含めようとすると、すべてが爆発し、グループ化が失敗したように見えます。任意の助けを事前に
SELECT m.movieId, m.title, m.releaseDate, m.description, g.name, a.fname, a.lname
FROM movies m
INNER JOIN genres g ON g.genreId IN (SELECT genre FROM moviesGenres WHERE movie = m.movieId)
INNER JOIN actors a ON a.actorID IN (SELECT actor FROM moviesActors WHERE movie = m.movieId)
ORDER BY m.title
感謝を:ここで
は両方のためのSQLクエリが参加します!
UPDATE:
リーとマークによって提供されるクエリは、全体的に動作しているようですが、私はまだ俳優がで複数回表示見ています。ここに私のコードは次のとおりです。
<tbody>
<cfoutput query="variables.movieList" group="movieId">
<tr>
<td><a href="##">#title#</a></td>
<td><cfoutput group="name">#name# | </cfoutput></td>
<td><cfoutput group="actorId">#actorId# | </cfoutput></td>
</tr>
</cfoutput>
</tbody>
私も、最終的なタグをグループ化することなく、それを試してみたが、それは動作しませんでした。テストの簡潔さのために、a.lNameとa.fNameをa.actorIdに変更したことに注意してください。
サンプル行は次のようになります。
The Godfather Action | Drama | 1 | 2 | 1 | 2 |
は、タグ編集をロールバック。 – Leigh
SELECT DISTINCT m.movieID、m.title ...などのようにクエリに "Distinct"を追加してみてください。 –