t1_id
t1_name
оптимизация запроса mysql
таблица объекта t1:
Код:
таблица связок t2:
Код:
t2_id
t1_id
t3_id
t1_id
t3_id
таблица объекта t3:
Код:
t3_id
t3_name
t3_name
можно ли составить 1 mysql запрос что бы получить следующую схему для вывода в html?
Код:
t1_name t3_name
t3_name
t3_name
t1_name t3_name
t3_name
t3_name
t3_name
t1_name t3_name
t3_name
при условии что в t2 одному t1_id может быть много t3_id.
Код:
SELECT t1.t1_name , t3.t3_name FROM t2
INNER JOIN t1 ON t2.t1_id=t1.t1_id
INNER JOIN t3 ON t3.t3_id=t2.t3_id
WHERE t2.t2_id=someid
INNER JOIN t1 ON t2.t1_id=t1.t1_id
INNER JOIN t3 ON t3.t3_id=t2.t3_id
WHERE t2.t2_id=someid
на выходе должен получить
Код:
t1_name1 t3_name1
t1_name1 t3_name2
t1_name1 t3_name3
t1_name2 t3_name4
t1_name2 t3_name5
t1_name1 t3_name2
t1_name1 t3_name3
t1_name2 t3_name4
t1_name2 t3_name5
Хотя естественно более правильный вариант - добавить в таблицу t3 внешний ключ t1_id. И не #б@ть мозг себе и людям :D
Код:
<tr>
<td rowspan="3">t1_name1</td>
<td>t3_name1</td>
</tr>
<tr>
<td>t3_name2</td>
</tr>
<tr>
<td>t3_name3</td>
</tr>
<td rowspan="3">t1_name1</td>
<td>t3_name1</td>
</tr>
<tr>
<td>t3_name2</td>
</tr>
<tr>
<td>t3_name3</td>
</tr>
Код:
//Результат запроса в переменной $array
$ass_array = array();
foreach($array as $line)
{
$ass_array[$line[0]][]=$line[1];
}
print_r($ass_array);
foreach($ass_array as $key => $val)
{
echo '<tr><td rowspan="'.count($val).'">'.$key.'</td><td>'.$val[0].'</td></tr>';
for($i=1;$i<count($val);$i++)
echo '<tr><td>'.$val[$i].'</td></tr>';
}
$ass_array = array();
foreach($array as $line)
{
$ass_array[$line[0]][]=$line[1];
}
print_r($ass_array);
foreach($ass_array as $key => $val)
{
echo '<tr><td rowspan="'.count($val).'">'.$key.'</td><td>'.$val[0].'</td></tr>';
for($i=1;$i<count($val);$i++)
echo '<tr><td>'.$val[$i].'</td></tr>';
}
Большое спасибо, смысл понятен, удалось все реализовать.