1

オンラインで回答を検索しようとしましたが、残念ながら問題を解決できません。

これが私のコードです:

SELECT d.driverID, 
       e.firstname, 
       e.lastname, 
       t.testid, 
       t.testType
 FROM driver d
 LEFT JOIN employee e 
   ON (e.employeeID = d.employeeID)
INNER JOIN driver_test dt 
   ON (d.driverID = dt.driverID  WHERE dt.testDate(BETWEEN TO_DATE('01-JAN-2012', 'dd-mm-yyyy') AND TO_DATE('31-JAN-2012', 'dd-mm-yyyy')))
RIGHT JOIN test t ON dt.testID = t.testID WHERE (t.testType='Alcohol');

問題は 4 行目にあります。右括弧がありません。さらに追加しようとしましたが、問題は解決しません。

PS

私は現在Oracle SQLを勉強している学生なので、知識がまだ不足しています。

4

3 に答える 3

1

あなたの正しいクエリは

SELECT d.driverID, e.firstname, e.lastname, t.testid, t.testType
FROM driver d
LEFT JOIN employee e ON(e.employeeID = d.employeeID)
INNER JOIN driver_test dt ON(d.driverID = dt.driverID and dt.testDate(BETWEEN TO_DATE('01-JAN-2012', 'dd-mm-yyyy') AND TO_DATE('31-JAN-2012', 'dd-mm-yyyy')))
RIGHT JOIN test t ON dt.testID = t.testID 
WHERE (t.testType='Alcohol');

このWhere句はフィルタリング用です。この場合、(結合で) 論理演算を連結しています。したがって、AND を使用する必要があります。

于 2012-12-14T15:07:31.300 に答える
1

あなたの声明にはいくつかの誤りがあります

  • 複数の条件で結合するには、WHERE ではなく AND を使用する必要があります
  • 列名と BETWEEN の間の ( を取り除く

固定クエリ:

SELECT d.driverID,
   e.firstname,
   e.lastname,
   t.testid,
   t.testType
FROM driver d
  LEFT JOIN employee e
    ON (e.employeeID = d.employeeID)
 INNER JOIN driver_test dt
    ON (d.driverID = dt.driverID AND
       dt.testDate BETWEEN TO_DATE('01-JAN-2012',
                                    'dd-mm-yyyy') AND
       TO_DATE('31-JAN-2012',
                'dd-mm-yyyy'))
 RIGHT JOIN test t
    ON dt.testID = t.testID
 WHERE (t.testType = 'Alcohol');
于 2012-12-14T15:10:52.143 に答える
0

これを試してみてください

SELECT d.driverID, e.firstname, e.lastname, t.testid, t.testType
FROM driver d
LEFT JOIN employee e ON(e.employeeID = d.employeeID)
INNER JOIN driver_test dt ON(d.driverID = dt.driverID)
RIGHT JOIN test t ON dt.testID = t.testID
where dt.testDate(BETWEEN TO_DATE('01-JAN-2012', 'dd-mm-yyyy') AND 
TO_DATE('31-JAN-2012','dd-mm-yyyy'))) and t.testType='Alcohol';
于 2012-12-14T15:09:05.390 に答える