Laravel: left join + order c null

299
17 мая 2017, 09:19

Допустим есть табличка с людьми

  • id...name
  • 1......Максим
  • 2......Юля
  • 3......Денис
  • 4......Маша
  • 5......Кристина

И есть табличка с их возрастами

  • user_id..age
  • 1..........13
  • 2..........21
  • 3..........9
  • 5..........33

То есть для Маши(4) значения возраста нет, и мы хотим, чтобы тогда по-умолчанию считалось, что ей 18. И как бы сделать left join , а потом orderby по возрасту, чтобы это учитывалось, и выводилось не

  • id..age..имя
  • 3.....9....Денис
  • 1.....13...Максим
  • 2.....21...Юля
  • 5.....33...Кристина
  • 4.....null.Маша

а

  • id..age..имя
  • 3.....9....Денис
  • 1.....13...Максим
  • 4.....18...Маша
  • 2.....21...Юля
  • 5.....33...Кристина

Интересно решение на чистом sql, и на php laravel

Answer 1
select u.id,
   ifnull(a.age, 18) as user_age,
   u.name
from user u
   left join age a on u.id = a.id
order by user_age

Для реализации на php laravel почитайте доки, где всё подробно расписано.

Answer 2

На чистом SQL думаю примерно так

SELECT 
   `U`.`id` as `user_id`, 
   `U`.`name` as `name`, 
   IF(`A`.`age` = NULL, 18, `A`.`age`) as `age`  
FROM `users` as `U`
   JOIN `age` as `A`
      ON `U`.`id` = `A`.`User_id`
ORDER BY age

Eloquent

$users = DB::table('users')
            ->join('age', 'users.id', '=', 'age.user_id')
            ->select('users.*', DB::raw('IF(A.age = NULL, 18, A.age) as age'))
            ->orderBy('age', 'desc')
            ->get();
READ ALSO
@ - что это за оператор в php

@ - что это за оператор в php

Подскажите, где в документации можно найти про него информацию

275
C++ web Fraemwork

C++ web Fraemwork

Всатала задача написать веб приложение на С++До этого писал пару приложений на питоне с использование джанго

393
Неатомарные операции С++

Неатомарные операции С++

Какие операции называются неатомарными? Если можно с примером

330
Количество столкновений за 1 секунду для заданного количества точек С++ [требует правки]

Количество столкновений за 1 секунду для заданного количества точек С++ [требует правки]

HELPБез ООП Нужно определить количество столкновений за 1 секунду для заданного количества нульмерных шаров (точек) в одномерном пространстве,...

349