php - 在 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 的结果列数不同
解决方案
如果您使用 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 );
推荐阅读
- javascript - 承诺 {
} with PromiseState "fulfilled" with forEach 和 async - javascript - 我有一个功能,但重新加载后该功能不起作用,我怎样才能保持该功能处于激活状态?
- php - 从 PHP 中的 multidim 数组中获取平均值
- javascript - 使用 contenteditable 用户输入将表值相乘
- java - OWASP Java HTML Sanitizer - 用另一个带有内部文本的标签替换标签
- python - Pandas 中的 .duplicated() 方法的值是否存在模糊匹配?
- powershell - Powershell在csv中查找和替换单元格值
- javascript - React 深色主题:从 useContext 访问时,setContext 不是函数
- java - java.lang.NoSuchFieldError dynamoDB android timeoffset
- vue.js - Vue路由器和setTimeout