例如,如果我想链接OPOR,ORDR& ODLN但不知道它们之间的共同关键是什么,我怎么能找到它呢?
示例:
SELECT o0.NumAtCard 'Customer PO'
, o0.DocNum 'Sales Order No'
, o1.DocNum 'Purchase Order No'
, o2.DocNum 'Delivery Order No'
, o0.DocTotal 'Total Price'
FROM ORDR o0
JOIN OPOR o1 ON o0.primarykey = o1.foreignkey -- left?
JOIN ODLN o2 ON o1.primarykey = o2.foreignkey -- inner?
如何确定“primarykey”和“foreignkey”是什么?
答案 0 :(得分:0)
您需要知道两个表的结构。在SQL server中:
sp_help TableA;
sp_help TableB;
在MySQL中:
describe TableA;
describe TableB;
这将显示表结构。如果数据库设计得很好,您应该能够确定哪些列是外键。
根据您发布的结果了解要加入的列:
1)你可能期待一些不存在的东西。 2)它取决于你想做什么。假设您想要将OPOR中的行与ODLN中的行匹配,在ODLN中将它们标记为已取消,您可以选择:
select * from OPOR
inner join ODLN on
OPOR.DocEntry=ODLN.DocEntry
where CANCELLED='true';
或取消的有效值是什么。但是,如果不知道您想要的查询或更多地了解这些列的含义,我无法提出建议。这些表似乎完全相同,这表明加入它们是不寻常的。
答案 1 :(得分:0)
如果向下滚动sp_help结果,则应该看到约束。如果存在主键约束,请查看它使用的键。主键通常是用于链接到另一个表的键。