2011-03-09 62 views
0

我有一個SQLite請求來做,我不知道該怎麼做。加入iPhone上的SQLITE

這就是:

SELECT videoid,inappid FROM store,video 
WHERE store.paid='1' AND store.checked='1' 
AND video.inappid=store.inappid AND video.download =='0' 
ORDER BY video.inappid DESC,video.videoid; 

- > SQL錯誤答案:DB錯誤:1 「不明確的列名:inappid」

我解釋:存儲和視頻是2個表。 在商店中,有'inappid'(com.mysite.myapp.000)引用的產品。 'inappid'列名是表中的關鍵字,並且是唯一的。付費和檢查只是在商店表布爾。

在視頻中,有...視頻和每個視頻都有一個唯一的關鍵字'videoid'。一個'inappid'列引用了商店表中的inappid。

所以我的要求是:選擇我所有在付費和檢查的商店表中的inappid元素參數爲TRUE,並選擇我視頻表中的所有視頻,並在視頻表中填入此視頻WHERE此視頻尚未下載。

我知道我必須使用JOIN和ON元素,但我不知道該怎麼

請幫助烏。

回答

5

因爲兩個表都包含一列inappid,所以當您說SELECT videoid,inappid FROM ...時,它不知道您想要返回哪一個。

一個簡單的解決方法就是明確地挑選一個:SELECT videoid,video.inappid FROM ...

另一種解決方案是做你的加入使用JOIN和使用,在這種情況下,它會知道這兩個表中的「inappid」欄目是等價的:SELECT videoid,inappid FROM store JOIN video USING(inappid) WHERE store.paid='1' AND store.checked='1' AND video.download =='0' ORDER BY video.inappid DESC,video.videoid

-1
SELECT store.videoid, video.inappid FROM store,video 
WHERE store.paid='1' AND store.checked='1' 
AND video.inappid=store.inappid AND video.download =='0' 
ORDER BY video.inappid DESC,video.videoid; 

也許吧?