Paradox DB SQL多个JOINS(Paradox DB SQL Multiple JOINS)

我正在研究遗留的VB6项目,我需要像这样进行JOIN调用:

SELECT C.Cnum, C.RealDate, M.Name, R.Price, R.Qnt, R.RealPrice, R.QntP, R.QntR, M.Name FROM "CHECK" C LEFT JOIN "RCHECK" R ON C.Cnum = R.Cnum LEFT JOIN "PCHECK" P ON C.Cnum = P.Cnum LEFT JOIN "MONEY" M ON P.Curency = M.Sifr LEFT JOIN "MENU" MN ON R.Sifr = MN.Sifr WHERE C.Cnum > 0 ORDER BY C.Cnum

我使用"Driver={Microsoft Paradox Driver (*.db )};DriverID=538"作为连接字符串的一部分,但它似乎不支持多个连接! 这很奇怪。

任何想法如何解决/解决它?

是的,当我在Borland Database Desktop中运行此查询时,它工作正常。

更新1:

我的VB代码:

Dim Conn As New ADODB.Connection Dim sConnStr As String Dim sQuery As String sConnStr = "Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 5.X;CollatingSequence=ASCII;DBQ=C:\DBTOFTP\BUFF;DefaultDir=C:\DBTOFTP\BUFF;PWD=SOMEPASS;" sQuery = "SELECT C.Cnum, C.RealDate, M.Name, R.Price, R.Qnt, R.RealPrice, R.QntP, R.QntR, M.Name " & _ "FROM ""CHECK"" C " & _ "LEFT JOIN ""RCHECK"" R ON C.Cnum = R.Cnum " & _ "LEFT JOIN ""PCHECK"" P ON C.Cnum = P.Cnum " & _ "LEFT JOIN ""MONEY"" M ON P.Curency = M.Sifr " & _ "LEFT JOIN ""MENU"" MN ON R.Sifr = MN.Sifr " & _ "WHERE C.Cnum > 0 " & _ "ORDER BY C.Cnum" Conn.ConnectionString = sConnStr Conn.Open

I'm working on a legacy VB6 project and I need to make a JOIN call like this:

SELECT C.Cnum, C.RealDate, M.Name, R.Price, R.Qnt, R.RealPrice, R.QntP, R.QntR, M.Name FROM "CHECK" C LEFT JOIN "RCHECK" R ON C.Cnum = R.Cnum LEFT JOIN "PCHECK" P ON C.Cnum = P.Cnum LEFT JOIN "MONEY" M ON P.Curency = M.Sifr LEFT JOIN "MENU" MN ON R.Sifr = MN.Sifr WHERE C.Cnum > 0 ORDER BY C.Cnum

I use "Driver={Microsoft Paradox Driver (*.db )};DriverID=538" as a part of connection string but it seems it doesn't support more than one join! Which is weird.

Any ideas how to solve/workaround it?

And yes, when I run this query in Borland Database Desktop, it works fine.

Update 1:

My VB Code:

Dim Conn As New ADODB.Connection Dim sConnStr As String Dim sQuery As String sConnStr = "Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 5.X;CollatingSequence=ASCII;DBQ=C:\DBTOFTP\BUFF;DefaultDir=C:\DBTOFTP\BUFF;PWD=SOMEPASS;" sQuery = "SELECT C.Cnum, C.RealDate, M.Name, R.Price, R.Qnt, R.RealPrice, R.QntP, R.QntR, M.Name " & _ "FROM ""CHECK"" C " & _ "LEFT JOIN ""RCHECK"" R ON C.Cnum = R.Cnum " & _ "LEFT JOIN ""PCHECK"" P ON C.Cnum = P.Cnum " & _ "LEFT JOIN ""MONEY"" M ON P.Curency = M.Sifr " & _ "LEFT JOIN ""MENU"" MN ON R.Sifr = MN.Sifr " & _ "WHERE C.Cnum > 0 " & _ "ORDER BY C.Cnum" Conn.ConnectionString = sConnStr Conn.Open

最满意答案

一些旧驱动程序通常要求必须在括号中包含多个JOIN。

尝试这样的事情:

FROM ( "CHECK" C INNER JOIN "RCHECK" R ON C.Cnum = R.Cnum ) INNER JOIN "PCHECK" P ON P.Cnum = C.Cnum

Some old drivers often requires that multiple JOINs must be enclosed in parentheses.

Try something like this:

FROM ( "CHECK" C INNER JOIN "RCHECK" R ON C.Cnum = R.Cnum ) INNER JOIN "PCHECK" P ON P.Cnum = C.Cnum

更多推荐