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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: получить уникальные категории и данные к ним в одном запросе
 
 автор: oppo   (30.08.2006 в 12:27)   письмо автору
 
 

1)таблица categories
-------------------------------------
id | parent | name | и т.д.|.....|
-------------------------------------
-------------------------------------
2 | 1 | продукт | и т.д.|.....|
-------------------------------------
-------------------------------------
3 | 1 | пиво| и т.д.|.....|
-------------------------------------
-и так далее 20 рядов
----

2) таблица объяв
-------------------------------------
id | category | user | дата |
-------------------------------------
-------------------------------------
1 | 2 | вася | 12.09.06 |
-------------------------------------
-------------------------------------
2 | 2 | коля| 20.09.06 |
-------------------------------------
-------------------------------------
3 | 2 | света| 21.09.06 |
-------------------------------------

=========================================
ЗАДАЧА ПОЛУЧИТЬ все наименования категорий а если в категории есть объявления то напротив вывести кол-во объявлений в данной категории и последнего добавленного автора и дату добавления.

У автора скрипта - получает категории:
("SELECT * FROM categories WHERE published='1' ORDER BY sort_order")

а затем в цикле foreach($rows as $row) {
делает запросы для подсчета SELECT COUNT(*) AS ad_count from *объяв*
и второй запрос
SELECT user, date_format(date_created, '%d.%m.%Y' ) from *объяв*
====================================
Мне это не понравилось так как в цикле идут 2 запроса к базе 2* 20(catalog)
Соеденил таблицы перед foreash

SELECT cat.*, ob.user AS xyi, date_format(ob.date_created, '%d.%m.%Y' ) as date_creat    "
   ."\n          FROM categories AS cat     "
     ."\n         LEFT JOIN  *объяв*   AS ob ON ob.category=cat.id AND ob.published='1'  "
      ."\n      WHERE cat.published='1'   "
      ."\n     ORDER BY cat.sort_order "


Тогда вместо одной категории продукт вылазит 3 по порядку
продукт вася 1 12.09.06
продукт коля 1 20.09.06
продукт света 1 21.09.06
пиво ---

должно быть
продукт света 3 21.09.06
пиво ---

   
 
 автор: oppo   (30.08.2006 в 22:07)   письмо автору
 
   для: oppo   (30.08.2006 в 12:27)
 

select c.name,count(a.id),max(data),max(user) from categories as c left join ads as a on a.category=c.id group by c.name;

   
Rambler's Top100
вверх

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