【发布时间】:2016-01-23 13:17:32
【问题描述】:
我想做一个 SELECT 语句,它将获取一个表中的所有数据 + 使用 LEFT OUTER JOIN 跟随该表中的所有外键。例如:
`orderitem`
id
name
title_id
`title`
id
name
在上面的例子中,我可以使用以下语句:
SELECT * FROM orderitem LEFT OUTER JOIN title on orderitem.title_id=title.id
有没有办法在不知道表结构的情况下做到这一点?也就是要有如下的函数:
def get_select_statement(table)
???
get_select_statement(orderitem)
==> "SELECT * FROM orderitem LEFT OUTER JOIN title on orderitem.title_id=title.id"
如何做到这一点?
为了澄清这个问题,我想我正在从这个函数中寻找以下信息:
- 给定表中的所有列名是什么?
- 他们在 ForeignKey 关系中引用了哪些表?能够加入的关系是什么?
此外,请注意并非所有orderitems 都会有title,因此任何形式的INNER JOIN 都会删除数据。
【问题讨论】:
-
您使用什么 SQL 库/ORM 来为您的表建模?
-
回答这个问题的信息非常有限。但你的查询应该是内连接没有左连接
-
如果您使用
USING(name, id)子句而不是ON语句会怎样?