2014-03-14 116 views
1

我運行下面的命令,我在下面的列不明確的列名

Cursor cursor = getWritableDatabase().rawQuery("select ((odometer) - y.odometer)/(gallons) as mpg from gasLog x, gasLog y where y.odometer = (select max(z.odometer) from gasLog z where z.odometer < (odometer))", null); 

列里程錶,加侖,里程錶

我試圖改變它越來越不明確的列名到'里程錶'而不是(里程錶)然而它不返回任何東西。我需要做些什麼來使其正確識別該列?

我相信我也試過gasLog.odometer前一段時間,也沒有工作。

回答

0

問題是你有一個來自同一個表的子查詢,但是你不使用別名。通過這種方式,SQLite無法判斷您在子查詢中引用了哪些字段:原始選擇字段(x或y)或子查詢字段。在子查詢中使用別名也可以解決這個問題。

+0

謝謝你,這指出我在正確的方向。我並不完全理解它,因爲我是SQL新手,但在使用了一些Google之後,我認爲我的方向正確 – Rob

+1

我認爲你需要一個體面的SQL教程。要特別注意帶有**連接**,**別名**和**子查詢**的部分。 –