【问题标题】:What is wrong with this laravel query with left join?这个带有左连接的 laravel 查询有什么问题?
【发布时间】:2023-03-06 20:54:01
【问题描述】:

我正在开发一个 laravel 项目(Laravel 6.8)。我有一个位置表和一个仪表板表。我正在尝试构建一个查询,该查询将返回仪表板表中的所有匹配记录。查看另一个 SO 问题(Laravel 5.4 Raw Join Query),我看到了类似的需求,并尝试调整代码以满足我的需求,但它仍然不起作用。 这就是我现在所拥有的。

  $locations = DB::table('locations')
     ->selectRaw("site_name,
      COUNT(DISTINCT client) as client_count,
      GROUP_CONCAT(client_lob) as lobs,
      COUNT(DISTINCT client_lob) as lob_count,
      SUM(agent_workstations) as aw_sum,
     SUM(production_support_workstations) as psw_sum,
    locations.*" )
       ->leftJoin('dashboards', 'locations.id', '=', 'dashboards.location_id')

     ->whereNotNull('latitude')
    ->groupBy(['site_name'])
    ->orderBy('site_name', 'asc')
    ->get();

它只返回来自位置的数据,而不从仪表板返回任何内容。我看不出这个查询有什么问题。谁能给点建议?

【问题讨论】:

  • 因为您从不选择仪表板的字段
  • 我需要休息一晚,然后去睡觉。 @TsaiKuga,请回答而不是评论,我会接受。我不知道我是怎么错过的。
  • dashboards 表中的字段名称是什么?或者你想要仪表板的什么字段?
  • @TsaiKoga,不,你是对的。这就是我所缺少的。我完全忽略了这一点。如果您将评论变成答案,我会接受。
  • 我已经发布了。

标签: php laravel


【解决方案1】:

由于您从不选择仪表板的字段,因此请尝试像这样选择仪表板的字段:

$locations = DB::table('locations')
     ->selectRaw("site_name,
      COUNT(DISTINCT client) as client_count,
      GROUP_CONCAT(client_lob) as lobs,
      COUNT(DISTINCT client_lob) as lob_count,
      SUM(agent_workstations) as aw_sum,
     SUM(production_support_workstations) as psw_sum,
    locations.*, dashboards.column1, dashboards.column2" ) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 2011-09-29
    • 2011-10-13
    相关资源
    最近更新 更多