我想连接两个表,但我不能这样做,因为我想要和列并得到两个日期之间的结果
第一个表名: vip_allotment_details
allotment_id qty
2 3
2 5
1 2
1 4第二个表名: vip_allotment
id date_from date_to
1 2017-10-1 2017-10-5
2 2017-10-6 2017-10-10我希望从查询中得到这个结果
id qty date_from date_to
1 6 2017-10-1 2017-10-5
2 8 2017-10-6 2017-10-10我会解释结果:
第一个allotment_id字段与第二个表中的id字段相链接,结果是我们可以通过date_from和date_to之间的两个字段(id、date_to)来计算qty的和。
下面是我的尝试:
$query1 = "
SELECT SUM(qyt) as total
FROM vip_allotment_details
where allotment_id IN ( SELECT id from vip_allotment where date_from >= '$date_1' AND date_to <= '$date_2')
";在我的查询中,结果得到所有没有过滤器的qty字段之和。
我希望我已经很好地解释了我的问题。
谢谢/.
发布于 2017-10-15 17:16:48
我还没试过,但也许你可以这样做:
SELECT a.id AS id, SUM(qyt) AS qty, date_from, date_to
FROM vip_allotment AS a
LEFT JOIN vip_allotment_details AS b on b.allotment_id = a.id
WHERE a.date_from >= '{thedatestart}' AND a.date_to <= '{thedateend}'
GROUP BY a.id
ORDER BY a.id ASC;发布于 2017-10-15 17:16:55
尝试this..change您的表名并运行query..hopefully,它应该给出结果作为您的requirement..if不让我知道.
select a.id
, sum(b.qty)
, a.date_from
, a.date_to
from table1 a
, table2 b
where a.id = b.allotment_id
group
by b.allotment_id发布于 2017-10-15 17:20:23
您需要使用JOIN。我看到您使用的是IN关键字,这是行不通的。有很多方法可以解决你的问题。其中之一是
select allotment_id, qty, date_from, date_to
from
(select allotment_id, SUM(qty) as qty
from vip_allotment_details group by allotment_id
) at
INNER JOIN
vip_allotment va
ON va.id= at.allotment_id;https://stackoverflow.com/questions/46757718
复制相似问题