Sql 这个问题怎么了?
我想从3个不同的表中选择数据,我想选择数据并过滤它,使全名不出现两次,并且这个全名的顺序数将分组为一。我尝试了这些查询,但它给了我一个错误,你能帮我吗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`
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