即时从三个不同的表中选择数据,我想选择数据并过滤全名不要两次,并且该全名的订单数将分组为一。我尝试了这些查询,但它给了我一个错误,你能帮助我吗?
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`
答案 0 :(得分:1)
在您的陈述中,您选择的第一个字段是'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
答案 1 :(得分:0)
最初的错误是因为from
子句中没有名为 biz 的表格来从中选择 id 字段。
此外,此查询也将在count()
函数失败,因为没有group by
子句,这不是聚合函数。
答案 2 :(得分:-1)
FROM
deals
,
users
,
orders
我认为你不能这样做。您需要连接表,在这种情况下,您需要两个连接来连接3个表。这将是一个更复杂的查询。