Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

оптимизация запроса mysql

347
19 января 2012 года
Maniak
319 / / 05.11.2005
Добрый день. Вопрос в следующем. есть 3 таблицы

таблица объекта t1:
 
Код:
t1_id
t1_name


таблица связок t2:
 
Код:
t2_id
t1_id
t3_id


таблица объекта t3:
 
Код:
t3_id
t3_name


можно ли составить 1 mysql запрос что бы получить следующую схему для вывода в html?
 
Код:
t1_name t3_name
        t3_name
        t3_name
t1_name t3_name
        t3_name


при условии что в t2 одному t1_id может быть много t3_id.
277
19 января 2012 года
arrjj
1.7K / / 26.01.2011
 
Код:
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

на выходе должен получить
 
Код:
t1_name1 t3_name1
t1_name1 t3_name2
t1_name1 t3_name3
t1_name2 t3_name4
t1_name2 t3_name5


Хотя естественно более правильный вариант - добавить в таблицу t3 внешний ключ t1_id. И не #б@ть мозг себе и людям :D
347
19 января 2012 года
Maniak
319 / / 05.11.2005
можно ли потом как то оформить в виде html, типа такого:
 
Код:
<tr>
        <td rowspan="3">t1_name1</td>
        <td>t3_name1</td>
    </tr>
    <tr>
        <td>t3_name2</td>
    </tr>
    <tr>
        <td>t3_name3</td>
    </tr>
277
19 января 2012 года
arrjj
1.7K / / 26.01.2011
Кривовато малость но ничего:
Код:
//Результат запроса в переменной $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>';
}
347
19 января 2012 года
Maniak
319 / / 05.11.2005
Большое спасибо, смысл понятен, удалось все реализовать.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог