Как провильно сделать запрос по нескольким таблицам?

Astral Man

We Will Rock You
Как правильно сделать запрос по нескольким таблицам?

Все привет!

Есть три таблицы:
groups |id_group|name|
modules |id_nodules|name|
modules_groups |id_group|id_mod|

groups - здесь лежит инфа по группе, ИД и название
modules - инфа по модулям
modules_groups - к какой группе относится модуль

Мне нужно вывести информацию в какой группе какие модули.

Я сделал так: (но не уверен что это правильно, подправьте меня если что :))

$sql_groups = "SELECT *
FROM ".$prefix."_groups
ORDER BY name";
$r_groups = mysql_query($sql_groups);

while ($row_groups = mysql_fetch_array($r_groups)) {

$name_group = $row_groups['name'];
$id_group = $row_groups['id_group'];

echo "<b>$name_group<br></b>";

$sql_modules_groups = "SELECT *
FROM ".$prefix."_modules_groups
WHERE id_group = '$id_group'";
$r_modules_groups = mysql_query$sql_modules_groups);

while ($row_modules_groups = mysql_fetch_array(r_modules_groups)) {

$id_mod = $row_modules_groups['id_mod'];

$sql_modules = "SELECT *
FROM ".$prefix."_modules
WHERE id_mod = '$id_mod'
ORDER BY name";
$r_modules = mysql_query($sql_modules);

$row_modules = mysql_fetch_array($r_modules);

echo "$row_modules[name]<br>";
}
}
 

Developer

Guest
Связь между группой и модулем один-ко-многим? Тоесть группа содержит много модулей, а модуль может входить только в одну группу?
Если да, то достаточно 2-х таблиц.
modules (id, gr_id, name)
groups (id, name)

выбираем так:

select m.id m_id, m.name m_name, g.id g_id, g.name g_name from modules m inner join groups g on g.id=m.gr_id .....
 

ecto

Новичок
select g.name,m.name
from groups g,modules m, modules_groups mg
where
g.id_group=mg.id_group and
m.id_modules=mg.id_mod

завпрос вернет -
группа - модуль
группа - модуль
и т.д.
 

Astral Man

We Will Rock You
Developer Один модуль может быть в разных группах

-~{}~ 04.03.04 16:28:

ecto Мне нужно
Гуппа
Модуль
Модуль
Гуппа
...
 

Developer

Guest
Ну мысль ты уже понял? Используй join
 

ecto

Новичок
...
Гуппа
Модуль
Модуль
Гуппа
...


а такой массив составишь стредствами рнр и того запроса
...
$rez=array();
while ($t = mysql_fetch_assoc($result))
$rez[$t['group_name]][]=$t['mod_name'];

в результате получишь массив
key group_name => array mod_names

по нему в двойном цикле проходишь и получишь то что хотел
 
Сверху