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

Форум MySQL

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

 

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

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

тема: Помогите разобраться с запросом (Select)
 
 автор: Roo$   (28.05.2008 в 23:04)   письмо автору
 
 

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

id           fio              sum                date

1           qw                10                   10.03.2008
2           qw1               8                    11.03.2008
3           qw                 5                     12.03.2008  
4           qw1              15                    12.03.2008


Мне нужно подсчитать sum у каждого не повторяющегося fio. Т.е. получить данные ввиде такого

qw = 15
qw1 = 23

Подскажите пож. запрос..

   
 
 автор: ronin80   (28.05.2008 в 23:13)   письмо автору
 
   для: Roo$   (28.05.2008 в 23:04)
 

select sum(sum)
from table1
group by fio

   
 
 автор: Trianon   (28.05.2008 в 23:22)   письмо автору
 
   для: Roo$   (28.05.2008 в 23:04)
 

SELECT fio, sum(`sum`) 
  FROM table1
  GROUP BY fio

   
 
 автор: Roo$   (29.05.2008 в 00:37)   письмо автору
 
   для: Trianon   (28.05.2008 в 23:22)
 

при этом поле sum должно быть целого типа?? А если допустим оно у мня типа string??

   
 
 автор: BinLaden   (29.05.2008 в 00:47)   письмо автору
 
   для: Roo$   (29.05.2008 в 00:37)
 

Проверьте. Однако следует задать другой вопрос: а зачем Вы задаёте строковой тип полю, в котором будут только числа?
Правда именно "string" в MySQL нет.

   
 
 автор: Trianon   (29.05.2008 в 01:09)   письмо автору
 
   для: Roo$   (29.05.2008 в 00:37)
 

А что Вы понимаете под словами "подсчитать sum" применительно к string?
Кстати, такой SQL-тип мне неизвестен.

Если оно у Вас string - вероятнее всего значит, что считать Вам нужно отнюдь не сумму.
Или как минимум - не сумму значений этого поля

   
 
 автор: Roo$   (29.05.2008 в 11:12)   письмо автору
 
   для: Trianon   (29.05.2008 в 01:09)
 

Под string я имел ввиду тип char.
Дапустим у мня таблица такого вида

id           fio              sum                                date 

1           qw              2196,00                   10.03.2008 
2           qw1            2596,00                  11.03.2008 
3           qw              2196,02                   12.03.2008   
4           qw1            2196,70                  12.03.2008


qw = 4392,02
qw1 = 4792,7

И нужно по прежнему получить сумму поля sum... но тип у этого поля char, т.к. мне проще записать такое число именно в этот тип чем в float.

   
 
 автор: ronin80   (29.05.2008 в 17:28)   письмо автору
 
   для: Roo$   (29.05.2008 в 11:12)
 

а ты пробовал sum по этому полю сделать? в чём собственно проблема?

   
 
 автор: Trianon   (29.05.2008 в 17:50)   письмо автору
 
   для: ronin80   (29.05.2008 в 17:28)
 

поле-то нечисловое.

   
 
 автор: Trianon   (29.05.2008 в 17:54)   письмо автору
 
   для: Roo$   (29.05.2008 в 11:12)
 

что ж ... вот Вам изврат.
SELECT fio, SUM(CAST(REPLACE(`sum`, ',', '.') AS DECIMAL)) AS res
  FROM table1
  GROUP BY fio 


PS. Советую всё же выбрать правильные типы - как для суммы, так и для даты.
В БД данные должны лежать в том виде, в котором это удобно БД.
А вовсе не пользователю.

   
 
 автор: Roo$   (29.05.2008 в 20:35)   письмо автору
 
   для: Trianon   (29.05.2008 в 17:54)
 

воо.. это то что мне и нужно ))
Большое СПАСИБО за помощь

   
 
 автор: BinLaden   (29.05.2008 в 23:24)   письмо автору
 
   для: Roo$   (29.05.2008 в 20:35)
 

> воо.. это то что мне и нужно ))

Я извиняюсь, но это Вам не нужно, честно. Вы на чём экономите? На времени или на занимаемом в на диске месте? В обоих случаях Вы проигрываете. Чем дальше - тем больше.

   
 
 автор: Roo$   (29.05.2008 в 21:16)   письмо автору
 
   для: Trianon   (29.05.2008 в 17:54)
 

.

   
 
 автор: Roo$   (29.05.2008 в 21:17)   письмо автору
 
   для: Trianon   (29.05.2008 в 17:54)
 

Шоб не создавать новую темку.. может подскажите.. как можно подсчитать кол-во сгруппированных строк??
Т.е. если брать мой пример.. то вывести результат типо такого: "из 4-х записей сгруппированно 2 строки"

делаю так.. но выводит кол-во не сгруппированных строк а хз какаих (ведать удовлетвор. условию where)

SELECT sum(sum), count(fio),  fio FROM table1 where (date > date1) and (date  < date2) GROUP BY fio


Итог должен быть такой : 2 - строки сгруппированны

qw
qw1

   
 
 автор: Trianon   (29.05.2008 в 21:52)   письмо автору
 
   для: Roo$   (29.05.2008 в 21:17)
 

Если честно - не понял вопроса.

   
 
 автор: Roo$   (29.05.2008 в 22:04)   письмо автору
 
   для: Trianon   (29.05.2008 в 21:52)
 

Другими словами..мне нужно подсчитать колличество не повторяющихся записей (по полю fio) в таблице.

   
 
 автор: Trianon   (29.05.2008 в 22:06)   письмо автору
 
   для: Roo$   (29.05.2008 в 22:04)
 

mysql_num_rows() чтоли?

   
 
 автор: Roo$   (29.05.2008 в 22:19)   письмо автору
 
   для: Trianon   (29.05.2008 в 22:06)
 

ммм.. не совсем то.. Смотри, есть таблица в которой ведется учет обо всех зарегенных пользователей (ников). Так вот мне нужно с этой таблицы вывести все записи, т.е. ники, которые не повторяются.. Дапустим
qw
qwq1
qwqw
qwqw
qwq1

Мне нужно вытащить
qw
qwq1
qwqw

   
 
 автор: Trianon   (29.05.2008 в 22:30)   письмо автору
 
   для: Roo$   (29.05.2008 в 22:19)
 

>ммм.. не совсем то.. Смотри, есть таблица в которой ведется учет обо всех зарегенных пользователей (ников).

В такой таблице поле с названием ника будет уникальным.


Впрочем, мне уже пофиг...

SELECT COUNT(DISTINCT fio) FROM table1;

   
Rambler's Top100
вверх

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