mysql join 也获取未连接的值

标签 mysql join

以下查询基于我的付款表。与每日订单表连接。我的日常表格中有帐单号码列表。通过此查询,我仅获得已付款的账单号码。希望从每日表格中获取账单编号的完整列表,如果未收到付款,则收到的列为空。并按账单编号升序对它们进行排序

create or replace view view_pymts
As SELECT p.`order-id`, p.`order-item-code`,daily.Bill_no,daily.tally_sku,daily.`quantity-purchased` as quantity,daily.`item-price`+daily.`shipping-price`as inv_value,daily.rma_rcvd_amt as return_value, round((SUM(p.amount) + z.other),2) AS received

FROM payments p
INNER JOIN daily ON p.`order-item-code`= daily.`order-item-id`
JOIN (
SELECT `order-id`, 
SUM(CASE WHEN `order-item-code` IS NULL
         THEN amount 
         ELSE 0.0 END) / (COUNT(DISTINCT `order-item-code`)) AS other 
FROM payments
GROUP BY `order-id`
) z
ON p.`order-id` = z.`order-id`
GROUP BY p.`order-id`, p.`order-item-code`

最佳答案

INNER JOIN 替换为 LEFT JOIN。这将使连接右侧表(连接语句之后的表,而不是之前的表,据说位于连接左侧)中的所有缺失字段NULL

编辑:我没有仔细阅读问题,@minatverma 是正确的。您可以使用RIGHT JOIN 代替INNER JOIN(右联接执行与左联接相反的操作,使左侧表中缺少的字段为空) ,或者切换表的顺序并使用LEFT JOIN

关于mysql join 也获取未连接的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34994769/

相关文章:

php - 执行sql文件时出错(ERROR 1114 mysql表已满)

mysql - SQL 多重内连接

MySQL在三张表上写连接

mysql - SQL SELECT 一个具有更多值的虚拟列

MySQL CurDate() 格式在一天后使用 MySQL EVENT 删除(清理表)数据?

重复滚动连接而不循环

mysql - 查找连接对 SQL 中的第二低值(使用排名)

MySQL 连接到同一个表

mysql - 使用不同和/或分组依据来过滤选择

php - 客户姓名的字母顺序不能通过 mysql 查询正常工作