обработка select-a из двух таблиц

vadim525

Новичок
доброго времени суток.

столкулся с проблемой, помогите решить.
есть две таблицы menu и podmenu

соответственно в menu основные разделы, в podmenu разделы для основного меню

структура:
menu
--------------------------
id | url_m | title |
1 | aaa | eee |
2 | bbb | www|
3 | ccc | uuu |

podmenu
--------------------------
id | url_p | url | title |
1 | www | zzz | ooo |
2 | www | nnn | yyy |

связь menu.url_m = podmenu.url_p

делаю такой запрос
PHP:
SELECT * FROM `menu` AS a LEFT JOIN `podmenu` AS b 
                             ON a.`url_m` = b.`url_p`
выводит
id | url_m | title | id | url_p | url | title |
1 | aaa | eee | NULL | NULL | NULL | NULL |
2 | bbb | www| 1 | www | zzz | ooo |
2 | bbb | www| 2 | www | nnn | yyy |
3 | ccc | uuu | NULL | NULL | NULL | NULL |

как в цикле сделать чтобы выводились уникальные значения menu.title, а к нему если nemu.url_m = podmenu.url_p цеплять podmenu.ur, и соответственно все т.к zzz и nnn.

может запрос надо изменить?
 

vadim525

Новичок
так принцип вроде понял, спасибо.
единственное сложность вызывает один момент,

структура такая:
-------------------------------------------------------------------------------
cat_id | parent_id | cat_name
1 | 0 | Таможенное оформление грузов
2 | 0 | Интермодальные перевозки
3 | 2 | морские
4 | 2 | речной
5 | 2 | ж/д
6 | 2 | автомобильные
7 | 0 | Экспедирование грузов

вывожу так
PHP:
function get_tree($parent_id = 0, $prefix = '')
{
  static $out;
  $q = "SELECT * FROM `catalog` WHERE `parent_id` = '".$parent_id."'";
  $db = Registry::get('db');
  $r = $db->query($q);
  
  while($row = $r->fetch(PDO::FETCH_ASSOC))
  {
    $out .= $prefix.$row['cat_name']."<br />";
    get_tree($row['cat_id'], $prefix."&nbsp;&nbsp; - ");
  }
  return $out;
}

echo get_tree();
непонятность появляется в работе скрипта, а именно
Делаем запрос в базу и выводим все parent_id == 0,
в цикле берем cat_name
дальше вызываем опять get_tree с параметрами cat_id = 1 и вытаскиваем все parent_id == 1

Вопрос, как цикл выводит все parent_id == 0, если уже на втором витке в $row ничего нет т.к в parent_id == 1 отсутствует.
 
Сверху