我试图对两个表进行左连接:invoices和vendors。典型的问题是,我在右边的表(vendors)中有多个条目,这会导致重复的结果:
Vendors Invoices
vend_id name vend_id line_amt
001 Lowes 001 5.95
001 lowes 002 17
001 Lowes_ca 002 25
002 Bills 002 40
002 Bill's 003 4.35
003 Two Alphas 003 3.75
004 Apple Cartz 003 10
004 23
004 56
004 80
我在找这个:
^{pr2}$但我得到的是:
vend_id line_amt name
001 5.95 Lowes
001 5.95 lowes
001 5.95 Lowes_ca
002 17 Bills
002 17 Bill's
002 25 Bills
002 25 Bill's
002 40 Bills
002 40 Bill's
003 4.35 Two Alphas
003 3.75 Two Alphas
003 10 Two Alphas
004 23 Apple Cartz
004 56 Apple Cartz
004 80 Apple Cartz
所以我正在尝试下面的代码在一个可选的in sqlalchemy核心上连接,但是我得到了一个Not an executable子句错误。由于数据库的设置方式,我不能使用ORM。有没有一种方法可以改变这段代码或者一个我没有想到的更好的解决方案?在
conn = engine.connect()
a = select([vendors.c.vend_id.label('vend_id'),
func.min(vendors.c.name).label('name')]).group_by(vendors.c.vend_id).alias('a')
s = select([
invoices.c.vend_id.label('vendor'),
invoices.c.line_amt.label('amount'),
]).join(a, a.c.vend_id == invoices.c.vend_id)
p = conn.execute(s)
首先,将invoices表与别名表联接起来就可以了。我需要使用
.select_from
来完成连接。这是有效的代码:相关问题 更多 >
编程相关推荐