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

Форум MySQL

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

 

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

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

тема: неправильный подсчет
 
 автор: ols   (03.12.2008 в 18:27)   письмо автору
 
 

Есть 2 запроса
Первый подсчитывает количество по каждому столбцу таблицы punkt -

SELECT
  COUNT(*)
FROM
  account_ob INNER JOIN punkt ON account_ob.login = punkt.description
  group by account_ob.login

А второй общее количесво

select COUNT(*) from account_ob


И сложить все получившиеся значения первго запроса, то по идее должно оно совпасться со вторым, а получается есть разница. Что может быть не так?

  Ответить  
 
 автор: Trianon   (03.12.2008 в 18:34)   письмо автору
 
   для: ols   (03.12.2008 в 18:27)
 

в общем случае первое не должно совпадать со вторым.
Из-за JOIN ... ON

  Ответить  
 
 автор: ols   (03.12.2008 в 18:37)   письмо автору
 
   для: Trianon   (03.12.2008 в 18:34)
 

Это как? Извините, не догоняю

  Ответить  
 
 автор: Trianon   (03.12.2008 в 19:16)   письмо автору
 
   для: ols   (03.12.2008 в 18:37)
 

JOIN ... ON ограничивает строки лишь теми, которые попадают под условие.
Строки, которые под условие не попадут, посчитаны не будут.

  Ответить  
 
 автор: ols   (03.12.2008 в 19:23)   письмо автору
 
   для: Trianon   (03.12.2008 в 19:16)
 

Хм..А как тогда можно поступить?

  Ответить  
 
 автор: Trianon   (03.12.2008 в 20:16)   письмо автору
 
   для: ols   (03.12.2008 в 19:23)
 

С чем?
Вы собственный вопрос прочли?

  Ответить  
 
 автор: ols   (03.12.2008 в 20:38)   письмо автору
 
   для: Trianon   (03.12.2008 в 19:16)
 

Так в запросе же условия нет никакого? По идее он должен подсчитать кол-во для каждого account_ob.login и если сложить между собой значения каждого account_ob.login то они дать тот же количественный результат что и
select COUNT(*) from account_ob

  Ответить  
 
 автор: Trianon   (03.12.2008 в 20:44)   письмо автору
 
   для: ols   (03.12.2008 в 20:38)
 

Условие есть. В разделе JOIN...ON. account_ob.login = punkt.description
Разжевываю: Согласно этому условию для каждой нужной к подсчету строки из первой таблицы во второй таблице обязательно должна присутствовать как минимум одна строка ей соответствующая.
Запрос select COUNT(*) from account_ob таких ограничений не накладывает.
Отсюда разный результат.

  Ответить  
 
 автор: ols   (04.12.2008 в 09:04)   письмо автору
 
   для: Trianon   (03.12.2008 в 20:44)
 

Все я понял о чем Вы. Наконец-то разобрался. Недаром столько времени провозился. Спасиба большое!

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

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