Как проверить существование записи в INNER JOIN?

Есть несколько таблиц из которых происходит выборка

SELECT studentapplication.id, 
       studentapplication.studentid, 
       category, 
       subcategory, 
       langcategory, 
       comment, 
       time, 
       currenttime, 
       status, 
       avatar, 
       auth.name, 
       auth.surname, 
       auth.patronymic 
FROM   `studentapplication` 
       INNER JOIN auth 
               ON studentapplication.studentid = auth.id 
       INNER JOIN studentapplicationconfirmedby 
               ON studentapplicationconfirmedby.teacherid <> :user_id 
                  AND studentapplicationconfirmedby.idapply = 
                      studentapplication.id 
                  AND (SELECT* 
                       FROM   `studentapplicationconfirmedby` 
                       WHERE  studentapplicationconfirmedby.idapply = 
                              studentapplication.id) 
WHERE  `status` = :satusApp_id; 

Теперь цель. В таблице studentApplicationConfirmedBy может присутствовать и не присутствовать запись для операции ON, мне же нужно добавлять данный INNER JOIN только в случае существования записи по (SELECT*FROM `studentApplicationConfirmedBy` WHERE studentApplicationConfirmedBy.idApply = studentApplication.id). В противном случае или не ставить INNER JOIN на эту таблицу или же убирать условие studentApplicationConfirmedBy.idApply = studentApplication.id. Моя логика была следующей: так как мы добавили (SELECT*FROM `studentApplicationConfirmedBy` WHERE studentApplicationConfirmedBy.idApply = studentApplication.id), то в случае пустого ответа от запроса, будет false и объединения по другим полям не будет, но это не сработало (ошибка: [21000][1241] Operand should contain 1 column(s)). Как это реализовать? (p.s извините за отсутствие переноса строк)


Ответы (1 шт):

Автор решения: JVic
SELECT studentapplication.id, 
       studentapplication.studentid, 
       category, 
       subcategory, 
       langcategory, 
       comment, 
       time, 
       currenttime, 
       status, 
       avatar, 
       auth.name, 
       auth.surname, 
       auth.patronymic 
FROM   `studentapplication` 
       INNER JOIN auth 
               ON studentapplication.studentid = auth.id 
       LEFT JOIN studentapplicationconfirmedby 
               ON studentapplicationconfirmedby.teacherid <> :user_id 
                  AND studentapplicationconfirmedby.idapply = 
                      studentapplication.id 
WHERE  `status` = :satusApp_id;

Если я все правильно понял

→ Ссылка