|
|
|
| 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 в 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; | |
|
|
|