2016-09-07 198 views
-1

我一直在MS Access中建模一些查詢,以便在我將它們翻譯成我的Android應用程序之前,它們顯示我想要的以及我想要的。查詢SQLite/Android中的查詢

但是,我的結果需要兩個查詢才能獲得最終結果 - 一個查詢執行一堆連接,然後第二個查詢將第一個查詢連接到一些其他表。如果我能把它們結合起來,我會但是沒有辦法。

不管怎麼說,SQLite中有一種方法可以讓我有效地做到這一點?

編輯:例:

Customers Table: ID, CustName 
Orders Table: ID, CustID, ItemID 
Items Table: ID, ItemName 

Query1: SELECT Orders.ID AS OrderID, Orders.CustID, Orders.ItemID, Customers.CustName 
FROM Orders LEFT JOIN Customers ON Orders.CustID = Customers.ID; 

Query2: SELECT Query1.OrderID, Query1.CustID, Query1.ItemID, Query1.CustName, Items.ItemName 
FROM Query1 LEFT JOIN Items ON Query1.ItemID = Items.ID; 

我知道在這種情況下,你可以很容易地結合這兩種,但讓我們假裝他們十分複雜,所以你必須讓他們分開。我想要一種方法在我的Android應用(使用SQLite)中獲得Query2的結果。

+1

......曾聽說過「Views」? –

+0

聽說過他們,但不知道他們是什麼或他們如何在這裏使用。 –

+0

你可以舉一個你需要的查詢的例子嗎?或者至少從數據庫中解釋表模式和你想要的數據? –

回答

-1

每個查詢,這是無論多麼複雜,可以在使用子查詢另一個查詢的FROM子句:

SELECT ... FROM (SELECT ...) AS Query1 JOIN ...; 

反正CREATE VIEW聽起來完全像你想要什麼:

CREATE VIEW命令爲預打包的SELECT語句分配一個名稱。一旦創建了視圖,它就可以在另一個SELECT的FROM子句中用來代替表名。

CREATE VIEW Query1 AS 
SELECT Orders.ID AS OrderID, 
     Orders.CustID, 
     Orders.ItemID, 
     Customers.CustName 
FROM Orders 
LEFT JOIN Customers ON Orders.CustID = Customers.ID; 
+0

我將如何在Java/Android/SQLiteOpenHelper環境中執行此操作? –

+0

通過執行此語句就像執行任何其他語句一樣。 –

+0

所以我會做'db.rawQuery(「CREATE VIEW查詢1 AS(SELECT Orders.ID AS的OrderID,Orders.CustID,Orders.ItemID,Customers.CustName 從接單LEFT JOIN客戶ON Orders.CustID = Customers.ID); 「);'然後'db.rawQuery(」SELECT Query1.OrderID,Query1.CustID,Query1.ItemID,Query1.CustName,Items。ItemName FROM Query1 LEFT JOIN Items ON Query1.ItemID = Items.ID;「);'? –