Преобразование селекта в строку

tnt9062

Guest
Преобразование селекта в строку

Граждане помогите

Есть две таблицы со связью "один-ко-многим". Нужно вывести все строки из главной таблицы и к результату добавить 1 поле, которое содержит все строки из дочерней таблицы, разделенные через запятую и соответственно связанные с главной таблицей

пример
главная таблица
mid name code
1 abc 456
2 def 789

дочерняя таблица
mid did comment
1 1 qwe
1 2 asd
2 1 zxc

хочется увидеть вот такой результат:
mid name code comments
1 abc 456 qwe, asd
2 def 789 zxc
 

Фанат

oncle terrible
Команда форума
какая проблема сделать обычный джойн, а потом в пхп формировать строку, как заблагорассудится - хоть через запятую, хоть через табуляцию?
 

Yurik

/dev/null
tnt9062 сделай обычный JOIN и обязательно с сортировкой по mid.
Потом через while проходишь в цыкле, запоминаешь текущий mid и если в итерации он больше предыдущего - выводишь новую строку и mid/name/code, если тот самый - выводишь только comment через запятую

PHP:
$result="SELECT * FROM main, sub WHERE main.mid=sub.did ORDER BY mid"

$mid=0;
while ($row=mysql_fetch_assoc($result)){
 if ($row['mid']!=$mid){
  echo "\r\n". $row['mid']." ".$row['name']. " ".$row['code']."\t".$row['comments'];
  $mid=$row['mid'];
 } else {
  echo "\t".$row['comments'];
 }
}
 

.des.

Поставил пиво кому надо ;-)
Если mysql версия позволяет то GROUP_CONCAT().
А mysql версия позволять должна так как она уже давно стабильная.
 

Yurik

/dev/null
.des.: да уж на практике чаще бывает нужно распихивать в HTML заготовку или набивать шаблон, но в данном конкретном случае может и оптимальнее.
 
Сверху