Я выполнил самосоединение в php, но это дает неверный результат

#php #mysql

#php #mysql

Вопрос:

Вот DB структура

 -------------------------------------------------------
| id | cat_title |  parent-cat_id | status            |  
-------------------------------------------------------
| 1  | Main      |  null          | enabled           |
| 2  | Child     |  1             | enabled           |
-------------------------------------------------------
  

Я написал этот запрос для самосоединения

 SELECT a.id as ID, a.cat_title as Title, s.cat_title as parent_category
FROM store_categories a
LEFT JOIN store_categories s ON s.parent_cat_id =a.id
  

Но это дает мне такой неправильный результат. потому Main что не было a parent_category и Child есть a parent_category of Main . и в результате он показывает Main , имеет a parent_category и Child не имеет.

 -----------------------------
| ID | Title |  parent-cat_id|  
-----------------------------
| 1  | Main      |  Child    |
| 2  | Child     |  null     |
-----------------------------
  

Комментарии:

1. Вы пытались изменить свое предложение ON на a.parent_cat_id =s.id

2. @NigelRen это работает, спасибо

Ответ №1:

Порядок, в котором вы связываете две версии таблицы, неправильный, вам просто нужно изменить предложение ON …

 SELECT a.id as ID, a.cat_title as Title, s.cat_title as parent_category 
    FROM store_categories a 
    LEFT JOIN store_categories s 
       ON a.parent_cat_id =s.id