WebページにMySQLクエリを正しく表示しようとしています。MySQLでヘルプが必要LEFT JOIN表示の問題
私は一緒に
singers
を接続する4つの簡単な表があります。私はすでに管理singer_id
、album_id
、album_name
:singer_id
、singer_name
songs
:singer_id
、song_name
、album_id
albums
を〜gこれらのテーブルはこのクエリを使用しています。
SELECT singers.singer_name, songs.song_name, albums.album_name
FROM singers
LEFT JOIN songs ON singers.singer_id = songs.singer_id
LEFT JOIN albums ON albums.album_id = songs.album_id
WHERE singers.singer_id = ?
ORDER BY songs.song_id DESC
私が今問題を抱えているのは、これらのテーブルを正しく表示することができないということです。
私は1枚のアルバムと11曲の歌手がいます。 これは私がこの歌手のために得ている結果です。
singer_name | song_name | album_name
__________________________________________________
singer name | song name | album name
singer name | song name | album name
singer name | song name | album name
singer name | song name | album name
singer name | song name | album name
singer name | song name | album name
singer name | song name | album name
singer name | song name | album name
singer name | song name | album name
singer name | song name | album name
singer name | song name | album name
1枚のアルバムを取得する代わりに、同じアルバムを11回取得しています。
ウェブページ私はforeach()
を使ってアルバムを表示しています。アルバムは1つではなく、同じアルバムになっています。質問の今
....
がどのように私はアルバムにONLY 3回を表示することができますか?
(私は9枚のアルバムで歌手がいるかもしれないので、ハードコーディングなしで)。
ありがとうございました。
EDIT:
これは私が
<?php foreach($results as $song): ?>
<tr>
<td></td>
<td>
<a href="/song/<?php echo urlencode($song['song_url']); ?>/" class="song">
<span><?php echo $song['song_name']; ?></span>
</a>
</td>
<td>
<a href="/album/<?php echo urlencode($song['album_name']); ?>/" class="album">
<?php echo $song['album_name']; ?>
</a>
</td>
<td>
<span class="time">
<?php echo $song['song_time']; ?>
</span>
</td>
<td>
<a href="/search/?search=<?php echo urlencode($song['song_genre']); ?>" class="genre">
<?php echo $song['song_genre']; ?>
</a>
</td>
<td><a href="#" class="play">נגן</a></td>
</tr>
<?php endforeach; ?>
の曲を表示する方法です私は曲がどのアルバムに添付されていない場合でも、すべての曲を取得します。ちょうど私が欲しいもの。アルバムを表示して
問題:
<?php foreach($results as $album): ?>
<li>
<a href="/album/<?php echo urlencode($album['url']); ?>/" class="album">
<img src="/media/<?php echo $album['singer_dir'] . '/' . $album['album_thumb']; ?>" alt="" />
<span class="album_name"><?php echo $album['album_name']; ?></span>
</a>
</li>
<?php endforeach; ?>
この歌手は1枚のアルバムを持っていますが、私は11回のためにそれを取得します。このアルバムは11曲あります。 私は一度だけそれを表示する必要があります....
どういう意味ですか?アルバムの名前のみを表示しますか? – EdoDodo
[MySQL LEFT JOIN複数のテーブルの論理問題の可能な複製](http://stackoverflow.com/questions/7051658/) mysql-left-join-multiple-t ables-logic-problem) –
@OMGPoniesこれは表示ではありません。 edododoは、アルバム名を表示するために結果をforeachループさせると、1つのアルバムと11の曲があると言うことができます.1回ではなく11回のアルバム名を取得します。 – ParparDromi