如何设置MySQL查询?

时间:2013-08-10 15:48:00

标签: php mysql sql select installation

如何设置此查询? 我在表中获奖。 例如,奖杯表中的奖杯可以是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。

谢谢!

2 个答案:

答案 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数据库但没有使用连接,那么它就像是一台花哨的新计算机,但只用它来在记事本中读写文本。