首页 > 解决方案 > 在 1 个查询中从 2 个表中选择行

问题描述

需要从表 1 中选择名称、域,而不是需要从表 2 中的列中获取值的总和,条件为 table1.id = table2。

表 2 的列数不同。

我尝试使用 UNION 和 UNION ALL 加入 2 个查询,但我一直遇到不同列数的相同问题。

$rows = $test->query('select domain,name from customers 
UNION 
select SUM(customer_id) from main.rentals,main.customers where customer_id = customers.id');

预计将是"User's Name" - "domain" - "number of rentals(integer)"

警告:SQLite3::query(): Unable to prepare statement: 1,UNION 左右的 SELECT 的结果列数不同

标签: phpmysql

解决方案


如果您使用 SUM,它将汇总所有 id,例如,如果您的客户 ID 为 10,它显示 5 次,结果将是 50。另一方面,如果您使用 count,它将计算显示该 id 的行. 这就是为什么我们要分组。您可以对其进行调整以满足您的特定需求,但这是实现您想要的一种方式。

$query = "
SELECT
   domain,
   name,
   count(customer_id) as Total
FROM
   customers
left join main.rentals on customers.id = customer_id
GROUP BY
   customer_id
";

$test->query($query );


推荐阅读