Использование оператора IF в MySQL для включения всех результатов - PullRequest
0 голосов
/ 07 октября 2018

В моем операторе SQL я запрашиваю 2 таблицы, чтобы получить метки и ссылки для панели навигации.Запрос проверяет site_menu для label и page_id, чтобы затем получить filename из таблицы site_pages.

У меня проблема в том, что могут быть выпадающие меню, поэтомучто label для раскрывающегося списка не будет иметь ассоциированного page_id, но я все еще хочу, чтобы оно было возвращено в результатах.

Я полагаю, что может быть, если функциональность If / ELSE я мог бы добавить в SQLзаявление ??

     SELECT
      site_menu.page_id,
      site_menu.label,
      site_pages.filename
     FROM
      site_menu,
      site_pages
     WHERE
      site_menu.site_id = 1
     AND
      site_menu.parent_id = 0
     AND
      site_pages.id = site_menu.page_id
     ORDER BY
      site_menu.ord
     ASC

1 Ответ

0 голосов
/ 08 октября 2018

Вам следует заменить неявное JOIN (,) на LEFT JOIN, чтобы ваш запрос возвращал результаты независимо от того, существует ли запись в таблице site_pages:

 SELECT
  site_menu.page_id,
  site_menu.label,
  site_pages.filename
 FROM
  site_menu
 LEFT JOIN
  site_pages
 ON
  site_pages.id = site_menu.page_id
 WHERE
  site_menu.site_id = 1
 AND
  site_menu.parent_id = 0
 ORDER BY
  site_menu.ord
 ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...