[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вывод комментов...
MatrixGod
$q1 = "SELECT * FROM `comments`";
$q1 .= " ORDER BY timestamp DESC LIMIT 0, 15";
$r1 = mysql_query($q1);

while($row = mysql_fetch_array($r1))
{

$q2 = mysql_query("SELECT * FROM `articles` WHERE id = '$row[id]'");
while($row = mysql_fetch_array($q2))
{
echo $row[title]."<br>";
}

}


2 таблицы. 1 - статьи, 2 - комменты.
у таблицы со статьями есть слолбик id и он auto-increment.
у таблицы комментов тоже есть id, он не auto-increment.
если к статье добавляется коммент, id-коммента получает значение id той статьи к которой он был добавлен. все просто.

мне надо вывести 15 последних названий статей к которым были сделаны комменты на сайте, причем так что если из этих 15 есть пару комментов принадлежащих одной статье, они не должны выводиться дважды.

как сделать? не могу сообразить...

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

всем спс!



Спустя 6 часов, 2 минуты, 59 секунд (2.05.2010 - 08:18) Lenarfate написал(а):
я бы на твоем месте засунул все в одну таблицу. и все проблемы решены. а вот запрос в цикле - это как минимум не оптимально!

Спустя 4 часа, 18 минут, 33 секунды (2.05.2010 - 12:37) Nikitian написал(а):
Надо по возможности избегать ситуации вложенных в циклы запросов.
Ваша задача решается например так:

select title from `articles` WHERE id in (select id from comments group by id order by timestamp DESC LIMIT 0, 15)

Либо так

select a.title from `articles` as a,`comments` as c where a.id=c.id group by a.id order by c.timestamp desc limit 15

Спустя 7 минут, 59 секунд (2.05.2010 - 12:45) MatrixGod написал(а):
а можно ли во время цикла запихивать результаты по одному в какой-то массив а потом вывести их с помощью array_unique()?

это то что я пытался сделать, и пользовался функцией array_push() но что-то так не склеелось...

не подскажете как это сделать с array_push()?

Спустя 3 минуты, 53 секунды (2.05.2010 - 12:49) MatrixGod написал(а):
Lenarfate
не реально. уже все готово. каждая таблица и так довольно большая.
плюс ко всему должен быть какой-то порядок...

Спустя 2 минуты, 50 секунд (2.05.2010 - 12:52) Lenarfate написал(а):
как не реально, если тебе на два поста выше показали приемлемый вариант biggrin.gif

Спустя 4 минуты, 33 секунды (2.05.2010 - 12:56) MatrixGod написал(а):
Lenarfate
не получается у меня.

а нереально я сказал на счет слияния 2-х таблиц.

Спустя 1 минута, 12 секунд (2.05.2010 - 12:57) Lenarfate написал(а):
посмотри еще раз внимательно

Спустя 1 минута, 51 секунда (2.05.2010 - 12:59) MatrixGod написал(а):
потому что вскоре можно будет оставлять комменты не только для статей а для много еще чего.

и все эти дела пихать в одну таблицу... сам понимаешь!

Спустя 3 минуты, 48 секунд (2.05.2010 - 13:03) Lenarfate написал(а):
а если для каждого раздела(таблицы) сделать свое поле с комментариями?

Спустя 2 минуты, 3 секунды (2.05.2010 - 13:05) Nikitian написал(а):
У меня все комменты ко всем данным лежат в одной таблице. Разделяются идентификатором таблицы (условно), к которой относятся их parent_id. В этом случае пишется один код для работы с комментами и всё сильно упрощается.

Спустя 3 минуты, 33 секунды (2.05.2010 - 13:09) MatrixGod написал(а):
Lenarfate
хотя знаешь что? я все таки так и сделаю, засуну все в одну таблицу.
надеюсь таблица не лопнет от своих рамеров! smile.gif

Спустя 40 секунд (2.05.2010 - 13:09) MatrixGod написал(а):
Nikitian
спасибо за советы! я так и сделаю!

Спустя 20 минут, 41 секунда (2.05.2010 - 13:30) Nikitian написал(а):
Кстати, чтобы не бояться неимоверного разрастания таблицы, посмотрите в сторону таблиц псевдо-типа merge. Это как раз решает проблему медленной работы больших таблиц.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.