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

Форум MySQL

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

 

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

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

тема: Суммирование значения столбца
 
 автор: MD5   (16.05.2007 в 17:32)   письмо автору
 
 

Ни как не могу сообразить, может подскажите, задача в слечующем, как выполнить запрос select n-ое количество раз, т.е. у меня есть запрос который по id ищет сумму

select sum(sp.quantity)
FROM supermag.smdocuments doc, supermag.smspec sp, supermag.saoperation op
WHERE doc.ID = sp.docid
AND doc.createdat BETWEEN to_date('29012007','DDMMYYYY') AND to_date('16052007','DDMMYYYY')
AND doc.opcode = op.ID
AND doc.docstate = 3
AND doc.locationto = 2
AND op.ID = 0
AND sp.ID = '51013515' --

есть второй запрос который находит список всех id по которым нужно найти сумму
SELECT smcard.ID
FROM smcard
WHERE idmeasurement = 1;

вот и вопрос как сделать в одном запросе чтобы
первый запрос посчитал сумму по всем ID из второго.
Буду очень благодарен за ответы.

   
 
 автор: Trianon   (16.05.2007 в 20:30)   письмо автору
 
   для: MD5   (16.05.2007 в 17:32)
 

Что значит "запрос ищет сумму" ?
IDу из какой таблицы соответствует smcard.ID? doc? sp? op?
Приведите дамп структуры таблиц ... и фрагмент дампа данных тоже не помешает.

   
 
 автор: MD5   (17.05.2007 в 09:20)   письмо автору
 
   для: Trianon   (16.05.2007 в 20:30)
 

> Что значит "запрос ищет сумму" ?
Это значит, что select считает сумму по столбцу quantity по определенным критериям, напиример так как я написал по sp.article='51013515'

>IDу из какой таблицы соответствует smcard.ID?

smcard.ID=sp.article

вот и мне надо чтобы запрос считал сумму не по одному критерию smspec.article='51013515' а по множеству, которое получаеться в результате запроса SELECT smcard.ID FROM smcard;

   
 
 автор: MD5   (17.05.2007 в 09:39)   письмо автору
 
   для: MD5   (17.05.2007 в 09:20)
 

И считал не просто в один одну сумму а по каждому ID отдельная строка
sp.article1- сумма 1
sp.article2- сумма 2
....................................

   
 
 автор: Trianon   (17.05.2007 в 09:44)   письмо автору
 
   для: MD5   (17.05.2007 в 09:20)
 

Для начала перепишем Ваш запрос в человеческий формат:

SELECT sum(sp.quantity) 
 FROM supermag.smspec AS sp  
  JOIN supermag.smdocuments AS doc ON sp.docid = doc.ID
  JOIN supermag.saoperation AS op ON doc.opcode = op.ID
 WHERE doc.createdat BETWEEN to_date('29012007','DDMMYYYY') AND to_date('16052007','DDMMYYYY')
  AND doc.docstate = 3
  AND doc.locationto = 2
  AND op.ID = 0
  AND sp.ID = '51013515'  


Потом соединим его с таблицей smcard, добавив перед суммированием группирование строк по smcard.ID


SELECT sc.ID, sum(sp.quantity) AS spsum
 FROM 
  supermag.smcard AS sc 
  JOIN supermag.smspec AS sp  ON sc.ID = sp.article
  JOIN supermag.smdocuments AS doc ON sp.docid = doc.ID
  JOIN supermag.saoperation AS op ON doc.opcode = op.ID
 WHERE doc.createdat BETWEEN to_date('29012007','DDMMYYYY') AND to_date('16052007','DDMMYYYY')
  AND doc.docstate = 3
  AND doc.locationto = 2
  AND op.ID = 0
  AND sp.ID = '51013515'  
 GROUP BY sc.ID

   
 
 автор: Trianon   (17.05.2007 в 09:49)   письмо автору
 
   для: Trianon   (17.05.2007 в 09:44)
 

Только, по-моему, либо Вы наврали с названием поля группировки, либо строка AND sp.ID = '51013515' - лишняя, либо у Вас в таблице явно избыточные и противоречивые данные....

   
 
 автор: MD5   (17.05.2007 в 12:10)   письмо автору
 
   для: Trianon   (17.05.2007 в 09:49)
 

строка AND sp.ID = '51013515'
конечно лишняя, это строка нужно когда выборка идет по одному ID

   
Rambler's Top100
вверх

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