首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在左侧,按顺序连接,始终从关系表中获取第一个数据。(铁轨)

在左侧,按顺序连接,始终从关系表中获取第一个数据。(铁轨)
EN

Stack Overflow用户
提问于 2014-04-24 12:20:43
回答 1查看 147关注 0票数 0

我有两张像发票和收据这样的桌子

代码语言:javascript
复制
1. invoices

    id name    amt   status
    1   test    100   paid
    2   test1   300  not paid
    3   test2   400  not paid

2. receipts
    id amount invoice_id receipt_date
     1  50      1         22-apr-2014  
     2  30      1         24-apr-2014   
     3  30      1         25-apr-2014

以下是我的查询

代码语言:javascript
复制
@invoices_info = Invoice.select("invoices.id as inv_id,receipts.receipt_date as receipt_date,sum(receipts.amount) as receipt_amount")
                      .joins('left join receipts on receipts.invoice_id = invoices.id')
                      .where("invoices.status in ('Paid')")
                      .group("invoices.id").order("receipts.receipt_date desc")

This query shows data as:
 inv_id  receipt_amount receipt_date
   1      100            22-apr-2014

所以问题是,它获取第一次日期而不是降序日期。我要最后一次收到日期“25-4月-2014年”。

有谁可以帮我?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-24 14:49:57

您的Invoice.select()不映射到有效的SQL。有效SQL要求SELECT子句中的每个未聚合列也出现在GROUP子句中。MySQL对GROUP的“扩展”(它允许您所做的事情)不是确定性的。(MySQL为您提供最容易获取的日期。)SQL开发人员认为这是一个bug,而不是一个特性。

我将在这个答案的其余部分使用SQL。

在PostgreSQL中执行此SQL语句。。。

代码语言:javascript
复制
select invoices.id as inv_id, receipts.receipt_date as receipt_date, sum(receipts.amount) as receipt_amount
from invoices
left join receipts on receipts.invoice_id = invoices.id
where invoices.status in ('paid')
group by invoices.id, receipts.receipt_date
order by receipts.receipt_date desc

返回此输出。

代码语言:javascript
复制
1   2014-04-24   30
1   2014-04-22   80

如果您只想要每个发票的和,这更有意义,您可以使用一个简单得多的SQL查询。

代码语言:javascript
复制
select invoice_id, sum(amount)
from receipts
group by invoice_id;

1    110

如果您想要的金额和日期的最新收据。。。

代码语言:javascript
复制
select invoice_id, max(receipt_date), sum(amount)
from receipts
group by invoice_id;

1   2014-04-24   110
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23268726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档