Коментарии для товаров.

sahnovich

Новичок
Коментарии для товаров.

Есть таблица:

PHP:
CREATE TABLE `otsivs` (
  `otziv_id` int(11) NOT NULL auto_increment,
  `itogi` text NOT NULL,
  `name` varchar(15) NOT NULL default '',
  `date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `otziv_doby` text NOT NULL,
  `za` varchar(250) NOT NULL default '',
  `protiv` varchar(250) NOT NULL default '',
  `id_product` int(11) NOT NULL default '0',
  PRIMARY KEY  (`otziv_id`),
  KEY `id_product` (`id_product`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=11 ;
В этой таблицы храняться коментарии к товарам.
Есть такой вот запрос:
PHP:
$sql="SELECT id_product, count(*) AS total FROM otsivs WHERE id_product IN ('".$id_product."') GROUP BY id_product ORDER BY total DESC";
Который выводит из таблицы количество коментариев к даному товару. Если из указаных товаров комен-рий отсутв. то он не показываеть в запросе что коментарив ноль. Подскажите как сделать так что бы он выводил весь список товаров , и показывал для всех товаров : если коментариев нету тогда 0, а если есть то кол-во коментариев для данного твара. Запрос работает , только не показывает 0 если коментарии отсутствуют.
 

Bitterman

Новичок
Сделать выборку по таблице товаров и присоединить к ней таблицу otsivs через LEFT JOIN. При этом сделать GROUP BY по по id продукта из таблицы товаров.
 

Bitterman

Новичок
[sql]
SELECT t.id_product, count(o.otziv_id) AS total FROM tovar as t
LEFT JOIN otsivs as o ON o.id_product=t.id_product
WHERE t.id_product IN ('".$id_product."')
GROUP BY t.id_product
ORDER BY total DESC
[/sql]
 

sahnovich

Новичок
Bitterman
PHP:
foreach ($id_product as $k)
					{
						$id[]=$k['id_product'];
					}	
					
					$id_pr=implode(',',$id);
				
				$con=mysql_connect($this->host,$this->login,$this->pass);		
				$sel_db=mysql_select_db($this->db,$con);
				$my_query=mysql_query("SELECT t.id_product, count(o.otziv_id) AS total FROM product AS t
 				LEFT JOIN otsivs AS o ON o.id_product=t.id_product WHERE t.id_product IN ('".$id_pr."')
 				GROUP BY t.id_product ORDER BY total DESC");				
							while ($row=mysql_fetch_assoc($my_query))
							{
								$product[]=$row;
								
							}
									return $product;
Запрос рабоает верно.
Возрощает 2 столбца, и показывает все правельно. Только вот что то не могу эти данные поместить в массив что то не выходит. Даже не могу понять что.

-~{}~ 08.05.07 14:22:

Bitterman
Если зделать вот так вот
PHP:
print_r($product)
то выводит следующие:
Array ( [0] => Array ( [id_product] => 10 [total] => 1 ) ) .
Впринципи парвельно. Но! Толькот по одной позиии а их несколько.
 

Bitterman

Новичок
Код вроде верный. Распечатай полученный запрос и посмотри, что он возвращает, сколько строк.
 
Сверху