Sql 这个问题怎么了?

Sql 这个问题怎么了?,sql,Sql,我想从3个不同的表中选择数据,我想选择数据并过滤它,使全名不出现两次,并且这个全名的顺序数将分组为一。我尝试了这些查询,但它给了我一个错误,你能帮我吗 SELECT `biz`.`id`, `deals`.`biz_id`, `deals`.`id` as `deal_id`, `deals`.`name`, `orders`.`id`, `users`.`username`, `users`.`fullname`, `users`.`id`

我想从3个不同的表中选择数据,我想选择数据并过滤它,使全名不出现两次,并且这个全名的顺序数将分组为一。我尝试了这些查询,但它给了我一个错误,你能帮我吗

SELECT 
   `biz`.`id`, 
   `deals`.`biz_id`,
   `deals`.`id` as `deal_id`,
   `deals`.`name`, 
   `orders`.`id`,
   `users`.`username`,
   `users`.`fullname`,
   `users`.`id` as `user_id`,
   `orders`.`dealid`, 
   `orders`.`userid` ,
    COUNT(`orders`.`userid`) as `num` 
FROM 
  `deals`,
  `users`,
  `orders` 
WHERE 
  `deals`.`biz_id` = '{$User['id']}' 
  AND `orders`.`dealid` = `deal_id` 
  AND `users_id` = `deals`.`userid`
交易
用户
订单


我认为你做不到。您需要连接表,在这种情况下,您需要两个连接来连接3个表。这将是一个比这个更复杂的查询。

在您的语句中,您选择的第一个字段是“biz”表中的“id”字段。但是,“biz”表不在FROM子句中

我想我可以猜到如何修复它:

SELECT 
   `biz`.`id`, 
   `deals`.`biz_id`,
   `deals`.`id` as `deal_id`,
   `deals`.`name`, 
   `orders`.`id`,
   `users`.`username`,
   `users`.`fullname`,
   `users`.`id` as `user_id`,
   `orders`.`dealid`, 
   `orders`.`userid` ,
    COUNT(`orders`.`userid`) as `num` 
FROM 
  `biz`,
  `deals`,
  `users`,
  `orders` 
WHERE 
  `deals`.`biz_id` = '{$User['id']}' 
  AND `biz`.`id` = `deals`.`biz_id`
  AND `orders`.`dealid` = `deal_id` 
  AND `users_id` = `deals`.`userid`
GROUP BY `orders`.`userid

初始错误是由于在
from
子句中没有名为biz的表来选择id字段


此外,此查询在
count()
函数中也会失败,因为没有
group by
子句,而且这不是一个聚合函数。

为什么要添加PHP标记,除非添加一些PHP代码?
$User['id']
中的数据正确吗?顺便说一句,您正在该查询中执行双笛卡尔积,这意味着您正在创建一个包含mnp行的表,其中m、n和p是每个表中的行数。这可能会非常占用CPU,我认为这可能会帮助您研究
连接以避免这种情况。仅供参考,您可能会接受SQL注入。研究在PDO中使用准备好的查询。当然,如果不实际查看您的代码,就很难确定。字段列表中的未知列“biz.id”不可能有执行SQL查询的原因。虽然不适合加入,但从语法上来说,不需要实际识别它。那么有人可以帮我组合查询吗?
SELECT 
   `biz`.`id`, 
   `deals`.`biz_id`,
   `deals`.`id` as `deal_id`,
   `deals`.`name`, 
   `orders`.`id`,
   `users`.`username`,
   `users`.`fullname`,
   `users`.`id` as `user_id`,
   `orders`.`dealid`, 
   `orders`.`userid` ,
    COUNT(`orders`.`userid`) as `num` 
FROM 
  `biz`,
  `deals`,
  `users`,
  `orders` 
WHERE 
  `deals`.`biz_id` = '{$User['id']}' 
  AND `biz`.`id` = `deals`.`biz_id`
  AND `orders`.`dealid` = `deal_id` 
  AND `users_id` = `deals`.`userid`
GROUP BY `orders`.`userid