Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Запрос к 3 таблицам

Сообщения:  [1-3] 

 
 автор: spider-x   (15.07.2008 в 02:01)   письмо автору
 
   для: sms-send   (14.07.2008 в 19:25)
 

О боже! СПАСИБО тебе наидобрейший sms-send, спас :) Если честно то пока ни разу не использовал вложенных запросов... но теперь вижу что это очень удобно...

А ещё, вложенные запросы не сильно нагружают базу по сравнению с одинарными? (не является ли основной запрос циклом для подзапроса)

Насчёт Limit 10
Ну у меня не совсем так, у меня постраничная навигация и поэтому лимит выглядит LIMIT 1, 10 примерно так :) при этом значения меняются от страницы к странице... (PHP скриптом)

   
 
 автор: sms-send   (14.07.2008 в 19:25)   письмо автору
 
   для: 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, то из временной таблицы будут использованы не все записи, а только часть или даже лишь одна запись..

   
 
 автор: spider-x   (14.07.2008 в 16:56)   письмо автору
 
 

Появилась у меня проблема. Есть 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 а выбираются только те у которых есть коментарии :(

Мозг кипит и мыслей больше нет :'( Не дайте умереть :(

Смысл в том чтобы показать количество коментариев у каждой новости

   

Сообщения:  [1-3] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования