1

如何设置此查询?我在一张桌子上有奖。例如,奖品表中的奖品可能是award_id 1。一条丝带在奖励表中可能是award_id 2。然后我有另一个表,award_user,它有用户的用户 ID 和用户 ID。所以,如果我想给用户award_id 1,而他们的userid 是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)");

不确定这是否可行。

基本上,它必须从带有用户 ID 的 Award_id 的奖励表中选择奖励。$userid 是一个有效的变量,它是他们的用户 ID。

谢谢!

4

2 回答 2

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形式通常也更有效。

于 2013-08-10T15:56:25.140 回答
0

你需要的是一个join

SELECT awards.* FROM awards
  JOIN award_user USING (award_id)
WHERE userid = :userid

顺便说一句,为了正确使用 SQL,您真正需要做的一件事是了解连接的工作原理。它们是关系数据库的全部内容。如果您使用的是 SQL 数据库但不使用连接,这有点像,比如说,拥有一台花哨的新计算机,但只使用它在记事本中读取和写入文本。

于 2013-08-10T15:54:49.257 回答