0

それが音楽サイトで、1000 曲あると想像してください。ユーザーは曲を「お気に入り」にできます。これは、memberID と songID を使用してルックアップ テーブルに保存されます。

次に、特定のユーザーのお気に入りをすべての曲のリストの一番上に表示したいと考えています。

SELECT  s.*, s.songID theSongID, f.*  
FROM su_songs AS s 
left JOIN su_member_favourites_lookup AS f 
ON f.songID = s.songID 
ORDER by f.songID IS NULL, s.songTitle ASC

...すべてのお気に入りを上部に表示するように機能します。しかし、ログインしたユーザーのお気に入りと、その下にある他のすべての曲を表示したいだけです

SELECT  s.*, s.songID theSongID, f.*  
FROM su_songs AS s 
left JOIN su_member_favourites_lookup AS f 
ON f.songID = s.songID 
WHERE memberID = " . $memberID . " 
ORDER by f.songID IS NULL, s.songTitle ASC

...WHERE句を追加してユーザーに一致させると、ユーザーのお気に入りのみが表示され、残りの曲は除外されます。

4

1 に答える 1

1

解決策は、WHERE の代わりに AND を使用することです。

SELECT  s.*, s.songID theSongID, f.*  
FROM su_songs AS s 
LEFT JOIN su_member_favourites_lookup AS f 
ON f.songID = s.songID AND f.memberID = " . $memberID . " 
ORDER by f.songID IS NULL, s.songTitle ASC

これは本当の疑問として始まり、何がうまくいくかを考えました...そしてそれはうまくいきました。うまくいけば、これは他の誰かを助けるでしょう。

于 2013-06-12T05:09:32.243 に答える