[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Можно ли это сделать одним запросом MySql
bazilio
Первый запрос достает три последним новости, второй запрос вытаскивает 1 последнюю фотографию к каждой новости, запрос номер 3 узнает количество комментариев к новостям.
Вопрос можно ли упростить запрос?
Сократить его например, когда вытаскиваю новость сразу узнать ID последней фотографии принадлежащей этой новости.

    $query = mysql_query("SELECT *, DATE_FORMAT(news_vremya, '%d.%m.%Y') as vremya , `users`.`user_name` 
FROM `news`
LEFT OUTER JOIN
`users` ON `news`.`news_avtor_id` = `users`.`user_id`
WHERE `news_show` = 1 ORDER BY `news_vremya`
DESC LIMIT 3"
);
while($row = mysql_fetch_assoc($query))
{
$content .= '<div style="min-height: 175px; border-bottom: 2px solid #B68856;">';
$evry = mysql_query("SELECT *
FROM `photo`
LEFT OUTER JOIN
`news` ON `photo`.`photo_pid`= `news`.`news_id`
WHERE `photo_category` = 2
and `news_id` = '"
.$row['news_id']."'
ORDER BY `photo_id`
DESC LIMIT 1"
);
$ow = mysql_fetch_assoc($evry);

if($ow)
{
$content .= '<img src="/img/photo/photo_'. $ow['photo_id'] .'_small.jpg" alt="" style="border: none; float: left; margin: 10px;" />';
}
$content .= ''. $row['vremya'] .'<br />'. $row['news_zagolovok'] .'<br /><b>анонс:</b> '. $row['news_anons'] .'<br /><b>автор: </b>'. $row['user_name'] .' <a href="/news/full/'. $row['news_id'] .'/">подробнее...</a><br /><br />';
$dsow = mysql_query("SELECT COUNT(DISTINCT `comment_id`) AS `rad`
FROM `news`
LEFT OUTER JOIN
`comment` ON `news`.`news_id`=`comment`.`comment_id_rows`
WHERE
`news_show` = '1'
and
`news_id`= '"
.$row['news_id']."'
"
);
$ow = mysql_fetch_assoc($dsow);
$content .= '<a href="/news/full/'. $row['news_id'] .'/">комментариев '. $ow['rad'] .'</a> </div> ';
}




Спустя 4 минуты, 59 секунд (2.11.2011 - 16:14) imbalance_hero написал(а):
bazilio
Можно, я даже пробовал всякие штуки делать, но в итоге запрос будет медленнее работать, смысла в этом никакого(!). Если индексы проставлены и выборку делаешь с ЛИМИТ 1, то лучше как у тебя.

Спустя 1 минута, 7 секунд (2.11.2011 - 16:15) bazilio написал(а):
Хорошо спасибо! Я просто думал он быстрее будет работать.

Спустя 1 час, 43 минуты, 57 секунд (2.11.2011 - 17:59) VELIK505 написал(а):
Триггер только если написать. Нагрузки будет меньше но работать будет медленнее
лучше всего как imbalance_hero
Быстрый ответ:

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