Как использовать SQL CASE & COUNT в JOIN Table - PullRequest
3 голосов
/ 28 июня 2019

введите описание изображения здесь Я хочу обобщить статус разрешения студента в один результат, используя запрос на соединение.Например, tbl_student и tbl_trns_clr, если статус всех офисов очищен, тогда замечания очищаются, в противном случае, если один офис не очищен, тогда замечание не очищается

enter image description here

SELECT *
FROM `tbl_student` as A join
     `tbl_trns_clr` as B 
     on B.EDP = A.EDP AND
        CASE WHEN (SELECT COUNT(*)
                   FROM tbl_trns_clr
                   WHERE B.clr_status = 'Not Cleared' AND A.EDP = B.EDP
                  ) = 0 THEN 'Cleared'
         END) as clr_status

, и я хочу, чтобы он появилсякак пользовательский интерфейс таблицы

1 Ответ

2 голосов
/ 28 июня 2019

Похоже, вам просто нужно скалярное выражение в SELECT, а не явное JOIN:

SELECT s.*,
       (CASE WHEN EXISTS (SELECT 1
                          FROM tbl_trns_clr c
                          WHERE c.clr_status = 'Not Cleared' AND
                                c.EDP = s.EDP
                         )
             THEN 'Cleared' ELSE 'Not Cleared'
         END) as clr_status
FROM `tbl_student` s;

Примечания:

  • Используйте псевдонимы таблиц, которые смысл .Случайные буквы, такие как A и B, затрудняют выполнение запроса.
  • Вам не нужно использовать COUNT(*).NOT EXISTS является более подходящим и имеет лучшую производительность - потому что он может остановиться на первом соответствующем значении.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...