Выборка из двух таблиц с объединением или... ?

Krisha

pain in the neck
Выборка из двух таблиц с объединением или... ?

Имеется 2 таблицы:

Companies
- CompanyID
- CompanyName

Departments
- DepartmentID
- DepartmentName
- CompanyID

Требуется получить (сгенерить) для каждой компании свой <select> состоящий из департаментов данной компании.

Никак не соображу, ну могу я выбрать для каждой компании все дапартаменты и сгенерить соответсвенно свой селект, но компаний-то может быть немерянно, не делать же каждый раз новый SELECT ....

Опять же могу сделать выборку с объединением, типа:

SELECT * FROM Companies as C LEFT JOIN Departments as D ON D.CompanyID=C.CompanyID

но в выборке получаем тоже не совсем то, что нужно...

Чую тут что-то очень простое, но голова думать отказывается, наведите на мысль плиз...
 

Demiurg

Guest
SELECT * FROM Companies as C , Departments as D where D.CompanyID=C.CompanyID order by C.CompanyID
 

Krisha

pain in the neck
Деми, твой запрос в результате выдает тоже самое, что и мой, но дело не в этом, затык - как из этого сгенерить селекты для каждой компании, то есть получить нечто:

Company1
-- Department1
-- Department2
-- Department3

Company2
-- Department1
-- Department2

и т.д.
 

Demiurg

Guest
ну, а дальше разбераешь пхпой.
ветчишь результат, и как companyid изменился, закрываешь старый селект и открываешь новый.
 

Krisha

pain in the neck
2 Romantik
Ну дык, загнал ессно, получаемс:

Array
(
[0] => Array
(
[CompanyID] => 1
[CompanyName] => DDI
[DepartmentID] => 1
[DepartmentName] => Account Department
)

[1] => Array
(
[CompanyID] => 1
[CompanyName] => DDI
[DepartmentID] => 23
[DepartmentName] => HR Department
)
и т.д.

2Demiurg
фетчишь результат, и как companyid изменился - вот тут и затык, как это проверять ?
 

Profic

just Profic (PHP5 BetaTeam)
сохранять старый и при изменении запихивать туда %)
типа
PHP:
// открываем селект
$cid = 0;
for (...) {
 if ($cid != $arr['companyid']) {
  // закрываем и открваем селект
  $cid = $arr['companyid']; // запоминаем
 }
 // рисуем оптион
}
// закрываем селект
 

Demiurg

Guest
$currentid = 0;
while($row = mysql_fetch_ ...)
{
if($row['companyid'] != $currentid)
{
// закрываем прошлый селект если $currentid!=0
// открываем новый селект
$currentid = $row['companyid'];
}
echo '<option ....';
}
 
Сверху