Различные вопросы по PHP и MySQL

245K
.
SlyDeath (18.02.2013 / 21:18)
SELECT `news`.*, COUNT(`comments`.`id_news`) AS count FROM news  
LEFT JOIN comments ON `comments`.`id_news` = `news`.`id` 
GROUP BY `news`.`id` 
ORDER BY `news`.`id` DESC 
LIMIT 20
Чего-то мне кажется, что счетчик не то посчитает там наверное нужно просто id вместо id_news.
И еще хотел узнать, чем лучше считать, * или по определенному полю. В обыкновенном запросе кажется лучше считать ряды.
.
(\/)____o_O____(\/)
Screamer, проверено, глянь мой кфм, имхо работа со строкой, на любой версии и сборке прокатит.я тестил
.
(\/)____o_O____(\/)
dont, заметил в тяжелых запросах надо смотреть на время выполнения, не раз было что все поля быстрее работали чем по конкретным, пробовал как то. так что все через пма смотрю, там же и результат выборки
.
Koenig, Как я понимаю, что рядами лучше считать - это и будет *, там ведь все поля. Значит остановимся на звездочке в подсчетах. Теперь надо грамотно составить запрос с этим LEFT JOIN. Со всякими там WHERE, GROUP и ORDER
.
(\/)____o_O____(\/)
dont, если запрос не один, where раз в 10 медленнее, надо определять через on
на словах не так просто. лучше самому попробовать. почитать статьи и маны.
сначала надо получить нужное, потом уже что либо менять и смотреть скорость
.
Koenig (18.02.2013 / 22:16)
Screamer, проверено, глянь мой кфм, имхо работа со строкой, на любой версии и сборке прокатит.я тестил
Я и не говорил что не будет работать, просто выставь репорт ошибок в -1 и будет кидать варнинг или нотис уже не помню
.
Koenig, Вот думаю как там написать, что считать комментарии если есть такая запись. И вот надо решить везде ли нужно выделять поля, типа такого
LEFT JOHN `news` NO `news`.`id` = `comments`.`id_news`
Вот сюда и хотел добавить WHERE `news`.`id` > 0, просто незнаю как грамотно это делается
.
(\/)____o_O____(\/)
Screamer, если без точки имя будет, возможно, но обычно проверки всякие и пишутся, ты проверил?
$f = '1.exe';
echo end(explode('.', $f));
.
(\/)____o_O____(\/)
dont, напиши on вместо where, если условий несколько пользуй скобки and или or
.
Koenig, Вот это кусок
ON `news`.`id` = `comments`.`id_news` WHERE `news`.`id` > 0
Только END не получается, ошибку покажет
Всего: 7969