|
 27.5 Кб |
|
| Как нижеследующую конструкцию можно реализовать одним запросом.
Пробовал "джоины", но тогда выводится результат не всего контента в древовидной структуре...
смотрите аттач., в нем структура БД и нужный мне результат.
$sql1 = "SELECT * FROM t_cat ORDER BY cposi";
$sql2 = "SELECT * FROM t_level_cat ORDER BY lposi";
$sql3 = "SELECT * FROM t_sub_cat ORDER BY sposi";
$query1 = $db->query($sql1);
$query2 = $db->query($sql2);
$query3 = $db->query($sql3);
while ($row = $db->get_array($query1))
{
$r .= $row1['ctitle'];
while ($row2 = $db->get_array($query2))
{
if ($row2['lcid'] == $row['cid'])
{
$r .= $row2['ltitle'];
}
while ($row3 = $db->get_array($query3))
{
if ($row3['slid'] == $row2['lid'])
{
$r .= $row3['stitle'];
}
}
}
}
|
| |
|
|
|
|
|
|
|
для: sayber
(12.01.2010 в 06:11)
| | Ну вот реально, если ты такой крутой программер, что юзаешь классы там, где достаточно 1 строки кода, зачем тебе вообще чьи-то советы? Тебе по силам быть наставником даже у Бога | |
|
|
|
|
|
|
|
для: sayber
(12.01.2010 в 06:11)
| | как говорится, это писец, а писец не лечим.
$sql = "SELECT * ";
$sql.= "FROM t_cat AS c ";
$sql.= "LEFT JOIN t_level_cat AS l ON...чего-то там ";
$sql.= "LEFT JOIN t_sub_cat AS s ON...чего-то там ";
$sql.= "ORDER BY c.cposi, l.lposi, s.sposi ";
$result=mysql_query($sql) or die(mysql_error());
while ($sql_ar=mysql_fetch_assoc($result)) {
echo "<P>Мама мыла раму (Смотри букварь)\r\n";
}
mysql_free_result($result);
Собственно, весь код. Работает быстрее в несколько сотен раз ;) | |
|
|
|
|
|
|
|
для: kosta_in_net
(12.01.2010 в 09:41)
| | Собственно я не говорил что крутой программер.
Классы как и любой код на пхп не проблема для меня а вот с sql туплю.
Я делал выборку примерно как ты указал выше но я не смог сделать как раз "чего то там..." | |
|
|
|
|
|
|
|
для: sayber
(12.01.2010 в 09:51)
| | Ты не указал как связаны таблицы. Вот я и написал "чего-то там". Привел какие-то принтскирины... русскими буквами написать можешь? | |
|
|
|
|
|
|
|
для: kosta_in_net
(12.01.2010 в 09:41)
| | В ORDER BY явно мало полей. Там еще должны быть стабилизирующие первичные ключи левых (в соединении) таблиц. Иначе если поля позиций не являются уникальными, отклик сервера может выдать несгруппированный ответ. | |
|
|
|
|
|
|
|
для: sayber
(12.01.2010 в 06:11)
| | В этом коде внутренние циклы (при втором проходе по внешним) попытаются бежать по уже вычерпанным Result-Set'ам (которые у Вас почему-то обозначены именами $query1...3 )
Структуру желательно приводить в виде дампа таблицы. Надо объяснять, почему? | |
|
|
|