Как получить родительское имя через запрос MySQL

#mysql

#mysql

Вопрос:

У меня есть следующий запрос :

 SELECT ty.id, ty.type, ty.pid, if(ty.pid = 0, '-',
       (select ty.type from bid_type ty where ty.pid != 0 and ty.id = ty.pid)) as parent,
       ty.code, ty.description, ty.icon,
       date_format(ty.adate, '%m-%d-%Y %H:%i:%s') as adate,
       date_format(ty.edate, '%m-%d-%Y %H:%i:%s') as edate, ty.status
  FROM (bid_type ty)
  

Я хочу получить ‘parent’ дочернего элемента с помощью этого запроса. Но он возвращает пустой результат для ‘parent’. Может ли кто-нибудь подсказать мне, что я делаю неправильно и как это можно исправить.

Заранее спасибо

Ответ №1:

Попробуйте присвоить двум таблицам разные псевдонимы. В вашем коде bid_type дважды присваивается псевдоним ty .

Ответ №2:

Вам нужно правильно переименовать свои таблицы, чтобы получить нужные данные. Кроме того, вместо использования подзапроса для выбора родительского типа вам следует использовать СОЕДИНЕНИЕ. Вероятно, внешнее соединение, поскольку ваш запрос подразумевает, что связь родитель-потомок в этой таблице необязательна.

Это должно сработать для вас:

 SELECT ty.id, ty.type, ty.pid, 
  if(ty.pid = 0, '-', p.type) as parent,
  ty.code, ty.description, ty.icon,
  date_format(ty.adate, '%m-%d-%Y %H:%i:%s') as adate,
  date_format(ty.edate, '%m-%d-%Y %H:%i:%s') as edate, ty.status
FROM bid_type ty
  LEFT OUTER JOIN bid_type p on p.id = ty.pid