大约一周前刚刚启动SQL,我想知道为什么这会给我一个错误。 如果我在顶部选择*,我可以看到ITEM_NUMBER以及我是否使用任何其他列名但我看不到这个。
我正在使用Oracle,ORDER_DELIVERABLES有ITEM_NUMBER作为主键,而DIGITALPRODUCT_ORDER.ITEM_NUMBER将它作为PF,我认为它是主要的外国人?
如果有人能帮助我,也许可以解释一下那会很棒。 谢谢!
SELECT ITEM_NUMBER
FROM
(
SELECT *
FROM ORDER_DELIVERABLES
INNER JOIN DIGITALPRODUCT_ORDER
ON DIGITALPRODUCT_ORDER.ITEM_NUMBER = ORDER_DELIVERABLES.ITEM_NUMBER
)
答案 0 :(得分:3)
它返回什么错误?
我怀疑这是一个模糊的字段错误,因为在*
部分中使用select
会从2个表中选择item_number,因此引擎不知道要采用哪个。试试这个:
SELECT t.it
FROM
(
SELECT o.ITEM_NUMBER it
FROM ORDER_DELIVERABLES o
INNER JOIN DIGITALPRODUCT_ORDER d ON d.ITEM_NUMBER = o.ITEM_NUMBER
) t
如评论所述,您的查询实际上可以通过以下方式完成:
SELECT o.ITEM_NUMBER
FROM ORDER_DELIVERABLES o
INNER JOIN DIGITALPRODUCT_ORDER d ON d.ITEM_NUMBER = o.ITEM_NUMBER
答案 1 :(得分:0)
你必须分两个层次思考:
1。)让我们从ORDER_DELIVERABLES中获取主键:
SHOW INDEX FROM ORDER_DELIVERABLES
2。)让我们将其构建到主查询
中SELECT ITEM_NUMBER
FROM SOME_MAIN_TABLE
WHERE ID = (
SHOW INDEX FROM ORDER_DELIVERABLES
)
这个逻辑基于MySQL,但我确信如果您查找Oracle手册,您可以找到如何从没有疯狂连接的表中访问主键:)。