как проверить, если данные одного поля столбца равны NULL, а затем проверить другое поле этой же строки? - PullRequest
0 голосов
/ 17 июня 2019

Я получаю данные из базы данных MySQL, где условие - если поле данных извлечения равно нулю, тогда проверьте поле отправки в эту конкретную строку

id   |  SSC | hhc |  dip
1    |  50  | 50  | null
2    |  60  | null| 60
3    |  50  | 55  | null

Условие - "hhc" и "dip"оба не равны NULL, и они не заполняются одновременно

я действительно не знаю, что делать, я пытаюсь

$users->where('student_masters.hhc','>=' ,60);
$users->where('student_masters.dip','>=' ,60);

я получаю все данные, но условие if('student_masters.hhc' == null)затем проверьте другое поле означает student_masters.dip пожалуйста, помогите мне, что я делаю

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

Если вы просто хотите получить значение любого столбца и не заботитесь о том, из какого он столбца, вы можете использовать оператор MySQL case.Это позволит вам использовать значение dip, если hhc равно нулю.

$users->select( DB::raw("CASE WHEN hhc IS NULL THEN dip ELSE hhc END AS data_value") )->get();

Обратите внимание, что здесь мы используем необработанный оператор выбора, поскольку это невозможно сделать с помощью чистого построителя запросов.

https://laravel.com/docs/5.8/database#running-queries

https://dev.mysql.com/doc/refman/5.7/en/case.html

0 голосов
/ 17 июня 2019
   ->where(function ($q) {
        $q->where('student_masters.hhc','!=' ,null);
        $q->where('student_masters.dip','=' ,null);
    })
    ->orWhere(function ($q) {
        $q->where('student_masters.hhc','=' ,null);
        $q->where('student_masters.dip','!=' ,null);
    })

Это может вам помочь.хотя вопрос мне не понятен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...