如何在InternetExplorer中使用javascript和ADO连接两个SQL表

如何在InternetExplorer中使用javascript和ADO连接两个SQL表,javascript,ado,jscript,activexobject,Javascript,Ado,Jscript,Activexobject,我正在使用Javascript和Internet Explorer的ActiveXObject连接到SQL数据库。我可以毫无问题地从单个表中读取结果。不幸的是,我无法理解连接同一数据库中的两个表的语法。以下是我正在尝试的: //create object var conn = new ActiveXObject("ADODB.Connection"); //store credentials var connectionstring = "Provider=sqloledb; Data Sou

我正在使用Javascript和Internet Explorer的ActiveXObject连接到SQL数据库。我可以毫无问题地从单个表中读取结果。不幸的是,我无法理解连接同一数据库中的两个表的语法。以下是我正在尝试的:

//create object
var conn = new ActiveXObject("ADODB.Connection");

//store credentials
var connectionstring = "Provider=sqloledb; Data Source={omitted}; Initial Catalog={omitted}; User ID={omitted};Password={omitted}";

//open the db connection with credentials
conn.Open(connectionstring);

//create a new record set
var rs = new ActiveXObject("ADODB.Recordset");

//search the record set with SQL call
rs.Open("SELECT * FROM [order] INNER JOIN OrderItems ON (order.Id = OrderItems.Id)", conn);

如果我删除了“内部连接”及其后的所有内容,我就没事了。请注意,我必须在第一个表的名称(“order”)周围加上括号,因为我认为它是一个受保护的关键字。。。有人知道Javascript中这类东西的正确语法吗?

这可能就是您正在寻找的SQL语法:

SELECT Orders.Id
FROM [Orders] 
INNER JOIN OrderItems ON [Orders].Id = OrderItems.Id
请注意,
是不必要的

如果要使用别名,则必须在
JOIN
子句的其余部分中使用这些别名:

SELECT o.Id 
FROM [Orders] o
INNER JOIN OrderItems oi ON o.Id = oi.Id
一旦确定了SQL,就应该能够将其传递到
Open
方法:

var sql = 
    'SELECT Orders.Id ' +
    'FROM [Orders] ' +
    'INNER JOIN OrderItems ON [Orders].Id = OrderItems.Id';

rs.Open(sql, conn);

“有人知道Javascript中这种东西的正确语法吗?”这与Javascript无关,这是ADO。如果它不起作用,你应该得到一个异常,并指出它为什么不起作用。例如,
select*
意味着“返回所有列”,并且这些表中至少有一个列名冲突(它们都有
Id
列),所以就这么简单。尝试为表提供别名并仅请求实际需要的列,例如,
从[order]o选择o.foo,oi.bar在[order].[Id]=[OrderItems].[Id]
上内部连接[OrderItems]oi。谢谢TJ。你说得对,我之前有个错误。我忘了发那个。。。它说:关键字“order”附近的语法不正确。现在,我正在尝试:rs.Open(“从[order]中选择o.Id,[order].[Id]=[OrderItems].[Id]”上的内部联接[OrderItems]oi,康涅狄格州);并获取以下信息:无法绑定多部分标识符“order.Id”。