如何设置此查询? 我在表中获奖。 例如,奖杯表中的奖杯可以是award_id 1。功能区可以在奖励表中为award_id 2。 然后我有另一个表,award_user,它有award_id和用户的用户ID。因此,如果我想给用户一个award_id 1,并且他们的用户ID是25,那么它将在award_user表中作为award_id 1和userid 25(这意味着他们有该奖励)。我想选择用户基于其用户ID的所有奖励。
但事情就是这样。奖项在奖项表中,但有关奖项的实际用户信息在奖项表中。所以,我想我必须从两个不同的地方选择。
这是我到目前为止所拥有的......
$ query = mysql_query(“SELECT * from award WHERE award_id =(SELECT award_id FROM award_user WHERE userid = $ userid)”);
不确定这是否有效。
基本上,它必须使用userid所具有的award_id从奖励表中选择奖励。 $ userid是一个有效的变量,它是用户ID。
谢谢!
答案 0 :(得分:1)
您表达查询的方式应该有效,只需进行一次小调整即可。您需要将=
更改为in
,因为可以有多个知道
SELECT *
from award a
WHERE a.award_id in (SELECT au.award_id FROM award_user au WHERE au.userid = $userid)
更典型的是,这将表示为连接:
select a.*
from award a join
award_user au
on a.award_id = au.award_id
where au.userid = $userid;
join
表单通常也更有效。
答案 1 :(得分:0)
您需要的是join:
SELECT awards.* FROM awards
JOIN award_user USING (award_id)
WHERE userid = :userid
顺便说一下,学习how joins work是你 为了正确使用SQL而需要做的一件事。它们是关系数据库的全部内容。如果您使用的是SQL数据库但没有使用连接,那么它就像是一台花哨的新计算机,但只用它来在记事本中读写文本。