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

Форум MySQL

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

 

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

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

тема: НЕ могу составить запрос (Уникальные года)
 
 автор: BAHO   (22.11.2004 в 13:44)   письмо автору
 
 

У меня такая проблема.
Существует таблица ks_honour_o, в ней есть 5 полей: id(auto_increment),img,name,info,year. В поле year хранится год из 4-х цифр (пример: 2004). У меня несколько записей. У всех есть год, он может быть каким угодно, может совпадать с другим годом. Так вот, я не могу составить запрос так, чтобы высвечиволось кол-во оригинальных годов, т.е. если у меня 4 записи, в первой year=2004, во второй year=2003, в третьей year=2004 и в четвёртой year=2002.
В первой и третьей записях год совпадает, следовательно общее кол-во оригинальных лет = 3 (2004 совпадает + 2002 + 2003). Долго мучился, может, Вы мне поможете.

   
 
 автор: cheops(из ННГУ)   (22.11.2004 в 13:55)
 
   для: BAHO   (22.11.2004 в 13:44)
 

Хм... для этого следует воспользовать оператором GROUP BY
SELECT year FROM ks_honour_o GROUP BY year

   
 
 автор: BAHO   (22.11.2004 в 15:14)   письмо автору
 
   для: cheops(из ННГУ)   (22.11.2004 в 13:55)
 

Ничего не получается. когда я вводил ентот запрос, то мне выдали почему-то самый маленький год.
я сделал такой запрос:

      $query=mysql_query("SELECT count(year) FROM ks_honour_o GROUP BY year ");
      $count=mysql_fetch_array($query);
      echo "$count[0]";

Но почему то отображается 1.

   
 
 автор: elenaki   (22.11.2004 в 20:46)   письмо автору
 
   для: BAHO   (22.11.2004 в 15:14)
 

DISTINCT выбирает оригинальные значения столбца

   
 
 автор: glsv (Дизайнер)   (22.11.2004 в 21:40)   письмо автору
 
   для: BAHO   (22.11.2004 в 15:14)
 

Попробуйте так:

SELECT count(distinct year) FROM 'ks_honour_o'

   
 
 автор: cheops   (22.11.2004 в 22:41)   письмо автору
 
   для: BAHO   (22.11.2004 в 15:14)
 

Хм... может лучше плясать от задачи, что требуется вывести?

   
 
 автор: ВАНО (аноним)   (23.11.2004 в 08:50)
 
   для: cheops   (22.11.2004 в 22:41)
 

мне лишь нужно вывести кол-0во оригинальных годов

   
 
 автор: cheops   (23.11.2004 в 11:35)   письмо автору
 
   для: ВАНО (аноним)   (23.11.2004 в 08:50)
 

Хм... т.е. насколько я понял следует вывести в столбик года и напротив их сколько раз они встречаются?
<?php
  $dblocation 
"127.0.0.1";
  
$dbname "test";
  
$dbuser "root";
  
$dbpasswd "";
  
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
  if (!
$dbcnx)
  {
    echo 
"<p>К сожалению, не доступен сервер MySQL</p>";
    exit();
  }
  if (!@
mysql_select_db($dbname,$dbcnx) )
  {
    echo 
"<p>К сожалению, не доступна база данных</p>";
    exit();
  }
  
// Формируем SQL-запрос
  
$query "SELECT year, COUNT(year) AS total FROM ks_honour_o GROUP BY year";
  
$yer mysql_query($query);
  if(!
yer)
  {
    echo 
mysql_error();
    exit();
  }
  while(
$year mysql_fetch_array($yer))
  {
    echo 
$year['year']." - ".$year['total']."<br>";
  }
?>

   
 
 автор: BAHO   (26.11.2004 в 18:42)   письмо автору
 
   для: cheops   (23.11.2004 в 11:35)
 

Нет, енто мне надо было. Команда distinct мне очень помогла, я дописал скрипт, спасибо БОЛЬШОЕ!
Мой новый вопрос в теме "кавычки".

   
Rambler's Top100
вверх

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