【问题标题】:SubQueries in Laravel 4.2Laravel 4.2 中的子查询
【发布时间】:2015-05-26 17:29:23
【问题描述】:

谁能教我如何在 Laravel 4.2 中使用这样的查询

SELECT 
    t.Truck_Number, 
    t.Created_dt,
    t.Latitude,
    t.Longitude,
    t.Speed,
    t.Heading 
FROM 
    truckgps t 
INNER JOIN 
    ( 
        SELECT 
            Truck_Number,
            max(Created_dt) as MaxDate 
        FROM
            truckgps 
        GROUP BY
            Truck_Number
    ) tm 
ON
    t.Truck_Number = tm.Truck_Number AND
    t.Created_dt = tm.MaxDate

这个查询是别人提供的,可以用 laravel 做的更好吗?

【问题讨论】:

    标签: mysql laravel-4 eloquent


    【解决方案1】:

    使用 Laravel 查询构建器 - 你可以这样:

       $results = DB::select("SELECT 
                             t.Truck_Number, 
                             t.Created_dt, 
                             t.Latitude, 
                             t.Longitude, 
                             t.Speed,
                             t.Heading FROM truckgps t 
            INNER JOIN 
            ( SELECT Truck_Number, max(Created_dt) as MaxDate from truckgps group by Truck_Number )   
               tm on t.Truck_Number = tm.Truck_Number and t.Created_dt = tm.MaxDate");
    

    或者如果你有参数,你可以像这样绑定:

    DB::select("select count(1) count from table t where t.id= ? and t.roles_id = ?", 
                array($id, $role_id)
              );
    

    【讨论】:

      【解决方案2】:

      如果您有两张桌子...我有一个解决方案可以解决您的问题..您不需要为此使用联接。表 1 名称 'truckgps' 和表 2 名称 'truckgpss' 我的回答

      $truckgps = DB::table('truckgps')->select('Truck_Number','Created','Latitude','Longitude','Speed','Heading ')->get();
      
      foreach ($truckgps as $t)
      {
      
      $result = DB::table('truckgpss')->select('MAX(Created_dt) AS MaxDate ','Truck_Number')->where('MaxDate','=',$t->Created_dt )->where('Truck_Number','=',$t->Truck_Number)->groupBy('Truck_Number')
                       ->get();
      
      
      // if u need value convert array to string use another foreach loop here
      
      foreach ($result as $value)
      {
      
      echo $value->Truck_Number; // now u can see the  result truck no..
      
      
         }
      
      
      }
      

      我认为它对你有帮助...谢谢..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-18
        • 2015-07-29
        • 1970-01-01
        • 2017-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多