2012-02-01 23 views
0

我正在PHP中開發一個開源的下載管理器,這是我第一次處理數據庫,我想知道什麼是最好的(優化)兩張表如下:使用SQLite將不同表上的記錄關聯起來的最佳方法

表A是主要的下載列表,每個下載列表都有一個'id'。 表B具有用於上表中每個下載的連接範圍。有'開始','結束','字節'和'downloadid'。每個下載都有一個或多個使用'downloadid'關聯的範圍。

我只是想以最優化的方式檢索下載列表及其範圍。

回答

1

從tableA中選擇a.id,a.col1,a.col2,b.col1,b.col2 a.id = b.dataloadid的內部聯接表bb其中a.id = <reqid> order by b .start

您當然應該使用您正在查找的dataloadid替換<reqid>。 這是你在找什麼?

+0

我只是不明白「where」部分:) – 2012-02-01 14:26:55

+0

我想你可以擺脫「where a.id =」部分,因爲我沒有看到任何設置約束條件的地方。你沒有說出你所反對的具體標準,以便給你一個所有下載的加入列表。如果我們在這裏有一些測試輸入/預期的輸出,但是如果你想要tableA的ID和tableB的所有細節,那麼選擇downloadid作爲ID,開始,結束,字節可能會更好從tableB。我假設tableA中有更多的細節比給定的,但只是想把它放在那裏。 – Robert 2012-02-01 16:49:38

+0

再次看了這個之後,我會說你確實需要一個連接(你沒有概括表A的內容,但暗示有其他數據)。我不確定你的「哪裏」條款會是什麼,因爲你沒有列出任何條件。也許在TableA中有一個UserID字段(鏈接回Users表),所以你可以做「where userid = 1」來選擇userid爲1的用戶所執行的所有下載。如果開始/結束是日期時間值,則可以排除在某個時間之前發生的項目。正如所寫,這些條件是模糊的。一般而言,http://www.sqlite.org/optoverview.html可能會有所幫助。 – Robert 2012-02-01 17:04:43

相關問題