|
|
|
|
|
для: sms-send
(14.07.2008 в 19:25)
| | О боже! СПАСИБО тебе наидобрейший sms-send, спас :) Если честно то пока ни разу не использовал вложенных запросов... но теперь вижу что это очень удобно...
А ещё, вложенные запросы не сильно нагружают базу по сравнению с одинарными? (не является ли основной запрос циклом для подзапроса)
Насчёт Limit 10
Ну у меня не совсем так, у меня постраничная навигация и поэтому лимит выглядит LIMIT 1, 10 примерно так :) при этом значения меняются от страницы к странице... (PHP скриптом) | |
|
|
|
|
|
|
|
для: spider-x
(14.07.2008 в 16:56)
| |
SELECT `id_new`, `new`, `name`, `date`, `edit_date`, `nick`, `news_kor`, `read`, `id_cat`, `cat_id`, `cat_name`, `cat_desc`, `cat_img`, COALESCE(`comm_count`.`count`,0) AS `count_comment` FROM `NEWS` LEFT JOIN (SELECT `newid`, COUNT(*) AS `count` FROM `COMMENTS` GROUP BY `newid`) AS `comm_count` ON `NEWS`.`id_new`=`comm_count`.`newid` LEFT JOIN `CATEGORY` ON `CATEGORY`.`cat_id`=`NEWS`.`id_cat` ORDER BY `id_form` DESC LIMIT 10
|
`id_cat`,`cat_id` - зачем получать оба поля, если они заведомо равны?
Поле `id_form` не нашёл ни в одной таблице, оставил как есть.
Лучше с такими вопросами вкладывать дамп.
P.S. сегодня примерно такая же задача была, сделал так же с подзапросом временной таблицы, может быть есть способ и попроще, ведь если основной запрос ограничен предикатом или с помощью LIMIT, то из временной таблицы будут использованы не все записи, а только часть или даже лишь одна запись.. | |
|
|
|
|
|
|
| Появилась у меня проблема. Есть 3 таблицы:
NEWS
id_new | new | name | date | edit_date | nick | news_kor | read | id_cat
|
CATEGORY
cat_id | cat_name | cat_desc | cat_img
|
COMMENTS
id | newid | name | url | comment | time | approved
|
В итоге запроса мне надо получить все поля таблиц NEWS и CATEGORY и количество записей NEWS.id_new = COMMENTS.newid
Итоговая таблица должна выглядеть примерно так:
id_new | new | name | date | edit_date | nick | news_kor | read | id_cat | cat_id | cat_name | cat_desc | cat_img | count_comment
|
Я пробовал писать так :
SELECT * , count( newid )
FROM `category` , `news` , `comments`
WHERE id_cat = cat_id
AND newid = id_new
GROUP BY newid
ORDER BY `id_form` DESC
LIMIT 10
|
но мне надо выбрать все записи из таблицы NEWS а выбираются только те у которых есть коментарии :(
Мозг кипит и мыслей больше нет :'( Не дайте умереть :(
Смысл в том чтобы показать количество коментариев у каждой новости | |
|
|
|
|