Php 如何设置MySQL查询?

Php 如何设置MySQL查询?,php,mysql,sql,select,installation,Php,Mysql,Sql,Select,Installation,如何设置此查询? 我的桌子上有奖品。 例如,奖杯可能是奖励表中的奖励id 1。功能区可能是奖励表中的奖励id 2。 然后我有另一个表,award_user,其中有用户的award_id和userid。所以,如果我想给用户奖励id 1,而他们的用户id是25,它将作为奖励id 1和用户id 25出现在奖励用户表中,这意味着他们有这个奖励。我想根据用户的用户ID选择用户获得的所有奖励 不过,事情是这样的。奖励在奖励表中,但有关奖励的实际用户信息在奖励表中。所以,我想我必须从两个不同的地方选择 这是我

如何设置此查询? 我的桌子上有奖品。 例如,奖杯可能是奖励表中的奖励id 1。功能区可能是奖励表中的奖励id 2。 然后我有另一个表,award_user,其中有用户的award_id和userid。所以,如果我想给用户奖励id 1,而他们的用户id是25,它将作为奖励id 1和用户id 25出现在奖励用户表中,这意味着他们有这个奖励。我想根据用户的用户ID选择用户获得的所有奖励

不过,事情是这样的。奖励在奖励表中,但有关奖励的实际用户信息在奖励表中。所以,我想我必须从两个不同的地方选择

这是我到目前为止得到的


$query=mysql\u querySELECT*from award其中award\u id=SELECT award\u id from award\u user其中userid=$userid

不确定这是否有效

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

谢谢

您需要的是:

顺便说一句,学习是正确使用SQL真正需要做的一件事。它们是关系数据库的全部内容。如果您使用的是SQL数据库,但不使用联接,这有点像,比如说,拥有一台新奇的计算机,但只使用它在记事本中读写文本。

您需要的是:


顺便说一句,学习是正确使用SQL真正需要做的一件事。它们是关系数据库的全部内容。如果您使用的是SQL数据库,但不使用联接,这有点像,比如说,拥有一台新奇的计算机,但只使用它在记事本中读写文本。

您表达查询的方式应该可行,只需稍加调整。您需要将中的=更改为,因为可以有多个感知

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;

连接表单通常也更有效。

您表达查询的方式应该有效,只需稍加调整。您需要将中的=更改为,因为可以有多个感知

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;

连接表单通常也更有效。

您可能只需要在此处进行简单的连接。展示您的表结构,有人可以向您展示如何基于表共享列关系进行连接您可能只需要在这里进行简单的连接。显示您的表结构,有人可以向您展示如何基于表共享列关系进行连接我正在尝试中使用的第一个查询。下面是我如何修改它的。选择*from award,award_user WHERE award_id from award_user WHERE userid=$userid然而,在phpMyAdmin中用数字1替换$userid进行测试,我在/ALL/ANY子查询中得到1052-列'award_id'是含糊不清的。您的from子句具有from award,award_user。这是由交叉积产生的,并导致问题。模糊性是语句的一部分中的奖励id。SELECT*from award WHERE award_id in SELECT award_id from award_user WHERE userid=$userid This works。但是,我需要从“奖励用户”表中选择一个名为issue\u id的列,这就是我试图从这两个表中选择*的原因。@alfredo。然后使用第二个查询,只需将au.issue\u id添加到select子句中。无法从where子句中引用的表中提取其他列。@alfredo。表别名是类型aw而不是au。我正在尝试使用中的第一个查询。下面是我如何修改它的。选择*from award,award_user WHERE award_id from award_user WHERE userid=$userid然而,在phpMyAdmin中用数字1替换$userid进行测试,我在/ALL/ANY子查询中得到1052-列'award_id'是含糊不清的。您的from子句具有from award,award_user。这是由交叉积产生的,并导致问题。模糊性是语句的一部分中的奖励id。SELECT*from award WHERE award_id in SELECT award_id from award_user WHERE userid=$userid This works。但是,我需要从“奖励用户”表中选择一个名为issue\u id的列,这就是我试图从这两个表中选择*的原因。@alfredo。然后使用第二个查询,只需将au.issue\u id添加到select子句中。无法从where子句中引用的表中提取其他列。@alfredo。表别名为aw而不是au类型。