Paradox DB SQL 多重连接

Posted

技术标签:

【中文标题】Paradox DB SQL 多重连接【英文标题】:Paradox DB SQL Multiple JOINS 【发布时间】:2016-02-10 02:37:44 【问题描述】:

我正在处理一个遗留的 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

【问题讨论】:

已验证查询使用单个 LEFT JOIN 运行,但随后失败 2 次或更多次? 是的,它只适用于单个,但适用于 2 个或更多:( 您能否向我们展示一下执行此查询的相关 VB 代码? 好的,更新了问题 【参考方案1】:

一些老司机经常要求多个JOIN必须用括号括起来。

试试这样的:

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

【讨论】:

像数学运算一样,每个运算只有更多的括号。 Microsoft Access 用这个“括号地狱”创建他的“连接”,你可以用它来创建你的查询 您能举个例子来说明这 4 个连接吗?我试图用括号添加 3rd JOIN,但它显示了一个错误...... SELECT TA.fieldA, TB.fieldB, TC.fieldC, TD.fieldD FROM ((TA INNER JOIN TB ON TA.id = TB.aid) INNER JOIN TC ON TB.id = TC.bId) INNER JOIN TD ON TC.id = TD.cId;

以上是关于Paradox DB SQL 多重连接的主要内容,如果未能解决你的问题,请参考以下文章

使用 microsoft.jet.oledb.4.0 从 paradox db 过滤日期字段

通过多重连接提高最大 n 的性能

SSIS如何从Paradox导入数据?

如何实现Paradox数据库文件(*.db)到sql server数据库的导入----要求用代码,不用向导

SQL左连接(多重连接条件)

将 paradox / borland 数据库作为单个文件打开