音乐数据库网站:
我有一个名为ps_albums
的表格,其中包含以下列:artist
,album
,genre_id
,依此类推。
我还有一个名为ps_users
的第二个表,其中包含以下列:user_id
,date_joined
,fave_genre_1
,fave_genre_2
,fav_genre_3
和其他。< / p>
我的总体目标是仅显示用户为前3个最喜欢的选择选择的音乐类型。
我能够将所有3个最喜欢的流派选择中的genre_id
插入到ps_profiles
中,其中包含此信息。现在我需要能够拉出3个genres_id,并且默认情况下只显示所有类型。
默认情况下SELECT * FROM ps_albums ORDER by DESC;
因此在首页上显示所有专辑。
现在,当该用户点击“我最喜欢的流派”时,我会这样做......
$query= "SELECT * FROM `ps_profiles` WHERE `user_id`= $user_id";
$row = @mysql_fetch_object(@mysql_query($query));
$genre1 = $row->fav_genre_1;
$genre2 = $row->fav_genre_2;
$genre3 = $row->fav_genre_3;
我希望能够根据ps_profiles
中的3个最喜欢的选项显示ps_albums中的所有记录。
我如何设置select语句?
SELECT * FROM ps_albums WHERE genre=$genre1 AND genre=$genre2 AND genre=$genre3
我该怎么做?有超过10种类型但我只想显示从3列中选择作为收藏的那些。希望这可以澄清一点。
答案 0 :(得分:3)
SELECT * FROM ps_albums WHERE genre in ($genre1,$genre2,$genre3)
答案 1 :(得分:1)
您可以使用OR
或IN()
来匹配具有多个可能值的列值。
例如:
SELECT * FROM t WHERE a=1 OR a=2 OR a=3;
SELECT * FROM t WHERE a IN(1,2,3);
因此,对于您的情况,它看起来像这样:
$query = "SELECT * FROM ps_albums WHERE genre IN('$genre1', '$genre2', '$genre3')";
我在查询中添加了引号,我假设类型是字符串?