2014-07-08 150 views
0

我越來越錯誤,但是問題是什麼。 plz幫我解決這個問題。SQL語句錯誤

select Train_name from TRAIN where Train_id in 
(select Train_id from ROUTE where source_distance in (select source_distance from ROUTE   where stop_number in 
    (select Station_id from STATION where Station_name='Kulaura Railway Station')) < source_distance in 
     (select source_distance from ROUTE where stop_number in 
      (select Station_id from STATION where Station_name='Saistagonj Railway Station'))); 

錯誤:

ORA-00907: missing right parenthesis 
*Cause: 00907. 00000 - "missing right parenthesis" 
*Action: Error at Line: 73 Column: 87 
+0

你得到的錯誤是什麼? –

+0

ORA-00907:缺少右括號 00907. 00000 - 「缺少右括號」 *原因: *動作: 行錯誤:73列:87 @Kris Gruttemeyer – Patriotic

+0

在 '<' 符號.....: ( – Patriotic

回答

0

刪除多餘)<

試試這個

SELECT train_name 
FROM train 
WHERE train_id IN (SELECT train_id 
        FROM route 
        WHERE source_distance IN (SELECT source_distance 
               FROM route 
               WHERE 
          stop_number IN (SELECT station_id 
              FROM station 
              WHERE 
          station_name = 'Kulaura Railway Station') AND 
            source_distance IN (SELECT source_distance 
                 FROM route 
                 WHERE 
            stop_number IN (SELECT station_id 
                FROM station 
                WHERE 
            station_name = 'Saistagonj Railway Station')) 
        ); 

而不是SubQuery可以使用JOIN

在大多數情況下JOIN s爲比子查詢更快,這是非常罕見的子查詢更快。

JOIN s RDBMS可以創建一個更適合您的查詢的執行計劃,並且可以預測應該加載哪些數據進行處理並節省時間,與子查詢不同,它將運行所有查詢並加載所有查詢數據做處理。

子查詢中的好處在於它們比JOIN更具可讀性:這就是爲什麼大多數新SQL人員更喜歡它們;這是簡單的方法;但是當涉及到性能時,JOINS在大多數情況下都更好,儘管它們也不難讀取。

SELECT T.train_name 
FROM train T JOIN route R ON R.train_id = T.train_id 
      JOIN station St On St.station_id = R.stop_number 
WHERE St.station_name = 'Kulaura Railway Station' OR St.station_name = 'Saistagonj Railway Station' 
+0

如果我使用而不是< or >那麼它不會比較兩個值..... – Patriotic

+0

我是新來的sql。我想如果我使用聯接,那麼它會做更多的工作,然後使用子查詢。我不知道我是對的還是錯的,哪個更適合連接或子查詢。 – Patriotic

+0

加入會更好總是 –