【问题标题】:SELECT where no commissions选择没有佣金的地方
【发布时间】:2018-12-13 20:50:02
【问题描述】:

我有 2 张桌子。

  1. account_receivables
  2. 佣金

account_receivables有很多佣金

commissions 有一个指向 account_receivables_id 的外键。

我的应用程序的工作方式是当account_receivables 获得插入时,它还会根据account_receivables.amount 计算一组销售代表的佣金。

有 2 个月的时间随机错过了 1 名销售代表。所以我要做的是找出所有遗漏佣金的account_receivables.id

对此有直接的 SQL 查询吗?这是一个 Laravel 应用程序,我尝试了以下方法,但没有成功:

$comms = DB::connection('mysqllocal')->table('commissions')
        ->select('account_receivables_id')
        ->whereNotIn('rep_group_number', [999999])
        ->groupBy('account_receivables_id')->get();

999999 是 rep_group_number

【问题讨论】:

  • 您在哪里记录计算值?
  • 根据您的解释,您试图找到在commissions 中没有记录的account_receivables_id

标签: mysql sql laravel


【解决方案1】:

基本上,您正在查找来自account_receivables 且在commissions 中没有相应记录的所有记录。

一个简单的LEFT JOIN 和一个WHERE ... IS NULL 应该可以做到。

select ar.id
from account_receivables ar
left join commissions c on c.account_receivables_id = ar.id
where c.id is null

您没有在问题中提供完整的表格结构;上面的查询假设两个表之间的关系如下(如果需要的话可以修改):

commissions.account_receivables_id -> account_receivables.id

【讨论】:

  • 我现在在佣金表中的内容是code c.account_receivables_id、c.amount、c.rep_id。我需要找出不存在 rep_id 999999 的 c.account_receivables_id。
  • 只是让您知道,还有许多其他具有相同 c.account_receivables_id 的佣金。创建 account_receivables 记录时,它可能会计算 5 个佣金记录,所有这些记录都具有相同的 c.account_receivables_id 但具有不同的 c.rep_id
猜你喜欢
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 2011-02-17
相关资源
最近更新 更多