2016-02-10 4 views
4

Я работаю над проектом наследие VB6 и мне нужно сделать JOIN вызов, как это:Paradox DB SQL Multiple JOINS

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" как часть строки соединения, но это, кажется, что Безразлично» t поддерживает более одного соединения! Что странно.

Любые идеи о том, как их решить или обходить?

И да, когда я запускаю этот запрос в Borland Database Desktop, он отлично работает.

Update 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 
+0

Подтвердили, что запрос выполняется с одним 'ЛЕВЫЙ JOIN' но терпит неудачу на 2 или больше? –

+0

Да, он работает с одним и не работает с 2 или более :( –

+1

Можете ли вы также показать нам соответствующий код VB, где вы выполняете этот запрос? –

ответ

4

Некоторые старые водители часто требует нескольких объединений, должны быть заключены в круглые скобки.

попробовать что-то вроде этого:

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

Ух ты. Кажется, работает! ? –

+0

Как и математические операции, просто больше скобок для каждой операции. Microsoft Access создает свои «соединения» с этим «скобковым адом», вы можете использовать его для создания своих запросов. –

+0

Не могли бы вы показать пример для этих 4 объединений? добавьте 3-ю JOIN с круглыми скобками, и она показала мне ошибку ... –