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

Форум MySQL

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

 

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

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

тема: Вывод строк если счетчик больше нуля
 
 автор: liberty   (02.03.2013 в 08:05)   письмо автору
 
 

Следующий скрипт выводит по столбцам города.
В скобках () выдается количество компаний в городе.
Задача: не выводить города где нет компаний.
А сейчас выводятся все города.
<?php 
$sql 
mysql_query("SELECT * FROM city WHERE id_country=1 ORDER by name");     
if(!
$sql)   
{echo 
"<br><p>В данном разделе пока нет информации</p>";}   
else    
{   
  if(
mysql_num_rows($sql) > 0)    
  {    
    while (
$row mysql_fetch_array($sql))     
    { 
      
$query "SELECT COUNT(*) FROM pu   
                WHERE approved='1' and id_town='
$row[id_town]'";  
      
$res mysql_query($query);  
      if(!
$res) exit("<br>Ошибка обращения к базе данных - ".mysql_error());  
      
$total mysql_result($res0); 
    
      
$filename[] = "<a href='post_towns_pu.php?id_town=$row[id_town]'>$row[name]</a>&nbsp;($total)"
    } 
  } 

?>

  Ответить  
 
 автор: Jovidon   (02.03.2013 в 11:39)   письмо автору
 
   для: liberty   (02.03.2013 в 08:05)
 


<?php  
$sql 
mysql_query("SELECT * FROM city WHERE id_country=1 ORDER by name");      
if(!
$sql)    
{echo 
"<br><p>В данном разделе пока нет информации</p>";}    
else     
{    
  if(
mysql_num_rows($sql) > 0)     
  {     
    while (
$row mysql_fetch_array($sql))      
    {  
      
$query "SELECT COUNT(*) FROM pu    
                WHERE approved='1' and id_town='
$row[id_town]'";   
      
$res mysql_query($query);   
      if(!
$res) exit("<br>Ошибка обращения к базе данных - ".mysql_error());   
      
$total mysql_result($res0);  
      
// сам ответиль на свой вопрось. (Вывод строк если счетчик больше нуля)
      
if($total 0)
      {
        
$filename[] = "<a href='post_towns_pu.php?id_town=$row[id_town]'>$row[name]</a>&nbsp;($total)";  
      }    
    }  
  }  
}  
?>

  Ответить  
 
 автор: Sfinks   (04.03.2013 в 09:14)   письмо автору
 
   для: liberty   (02.03.2013 в 08:05)
 

Вам сервер не жалко?
А если в базе 1000 городов, в цкле будет 1000 запросов к БД?

SELECT c.*, COUNT(*)co
FROM city c
JOIN pu USING( id_town )
WHERE c.id_country=1
  AND pu.approved='1'
GROUP BY id_town
ORDER BY c.name

  Ответить  
 
 автор: Valick   (04.03.2013 в 10:45)   письмо автору
 
   для: Sfinks   (04.03.2013 в 09:14)
 

а пустышек сразу чё не выкинул?

  Ответить  
 
 автор: liberty   (05.03.2013 в 03:38)   письмо автору
 
   для: Valick   (04.03.2013 в 10:45)
 

такой запрос мне не известен.
а базе 20000 городов. ((

  Ответить  
 
 автор: Sfinks   (05.03.2013 в 16:09)   письмо автору
 
   для: Valick   (04.03.2013 в 10:45)
 

Как не выкинул?
INNER JOIN ведь....
Если фирм не будет в каких-то городах, то и этих городов не будет.

  Ответить  
 
 автор: Valick   (05.03.2013 в 16:58)   письмо автору
 
   для: Sfinks   (05.03.2013 в 16:09)
 

> INNER JOIN ведь....
где? :)

  Ответить  
 
 автор: Sfinks   (06.03.2013 в 11:22)   письмо автору
 
   для: Valick   (05.03.2013 в 16:58)
 

тут =)

> In MySQL, JOIN, CROSS JOIN, and INNER JOIN are syntactic equivalents (they can replace each other).

  Ответить  
 
 автор: liberty   (17.03.2013 в 04:56)   письмо автору
 
   для: Sfinks   (06.03.2013 в 11:22)
 

>Вам сервер не жалко?
А если в базе 1000 городов, в цкле будет 1000 запросов к БД?

SELECT c.*, COUNT(*)co
FROM city c
JOIN pu USING( id_town )
WHERE c.id_country=1
AND pu.approved='1'
GROUP BY id_town
ORDER BY c.name
>


где об этом можно прочитать подробнее в интернете?

  Ответить  
 
 автор: Sfinks   (17.03.2013 в 09:21)   письмо автору
 
   для: liberty   (17.03.2013 в 04:56)
 

Нет более надежного источника информации, чем официальное руководство: SELECT Syntax
А конкретно про JOIN - ссылка на 1 пост выше.

  Ответить  
Rambler's Top100
вверх

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