2014-01-11 3 views
1

У меня есть эти две таблицы, которые относятся друг к другу с колонкой itemid. Мне удалось сделать сумму различных значений itemid, как показано в первом примере с data_table.Сумма данных из таблицы между датами в другой таблице

Теперь я хочу связать эту сумму по конкретным датам в другой таблице, но я не могу. Пожалуйста, кто-нибудь может мне помочь?

items_table

 
+--------+-----------+------------+ 
| itemid | published | publish_up | 
+--------+-----------+------------+ 
|  1 |   1 | 02-01-2014 | 
+--------+-----------+------------+ 

data_table

 
+--------+---------+------+ 
| itemid | fieldid | data | 
+--------+---------+------+ 
|  1 |  27 | 5 | 
|  1 |  28 | 10 | 
|  1 |  29 | 5 | 
+--------+---------+------+ 

Этот запрос в порядке:

SELECT (SELECT SUM(data) FROM data_table WHERE fieldid='27') 
    + (SELECT SUM(data) FROM data_table WHERE fieldid='28') 
    + (SELECT SUM(data) FROM data_table WHERE fieldid='29') 

Но не между датами:

SELECT (SELECT SUM(data) FROM data_table WHERE fieldid='27') 
    + (SELECT SUM(data) FROM data_table WHERE fieldid='28') 
    + (SELECT SUM(data) FROM data_table WHERE fieldid='29')  
WHERE (publish_up BETWEEN '2014-01-01 00:00:00' AND '2014-01-31 00:00:00') 
FROM items_table 

ответ

0
SELECT itemid, SUM(data) 
FROM  data_table JOIN items_table USING (itemid) 
WHERE publish_up >= '2014-01-01' 
    AND publish_up < '2014-02-01' 
GROUP BY itemid 
+0

Хорошо, но используйте JDatabaseQuery для этого. – Elin

+0

thx очень ...! – sebas

+0

SELECT SUM (данные) FROM data_table WHERE fieldid IN (SELECT itemid FROM items_table WHERE (publish_up BETWEEN '2014-01-01 00:00:00' AND '2014-01-31 00:00:00')) – sebas

Смежные вопросы