Select
如何使用關係通過選擇提取數據
免責聲明:SQL 新手
我有 3 張桌子。有一個“主”表(
used_for_lookup
如下所示)用於查找,另外兩個(fid_table
如下did_table
所示)是主表中的外鍵。為了論證的緣故,下表已被簡化為問題。數據庫操作插入到
did_table
andfid_table
中。這些通常非常罕見。當事件發生時,詳細資訊將在used_for_lookup
表中擷取。然後這張表是用來做SELECTS
的。表中的列fid
和是對和的引用。did``used_for_lookup``fid_table``did_table
帶有數據的簡化版本:
sqlite> select * from used_for_lookup; id datetime fid did ---------- ---------- ---------- ---------- 1 2014-10-10 1 1 sqlite> select * from did_table; id other_ints did_important_string ---------- ---------- ----------------------------------------------------- 1 1 this needs to go into the query result from did table sqlite> select * from fid_table; id other_ints fid_important_string ---------- ---------- ----------------------------------------------------- 1 1 this needs to go into the query result from fid table
最一般的查詢是我們
used_for_lookup
在 datatime 列上查詢 2 個日期事件之間的表。當我們進行選擇時,如下所示:
sqlite> select * from used_for_lookup where datetime between '2014-10-09' and '2014-10-11'; id datetime fid did ---------- ---------- ---------- ---------- 1 2014-10-10 1 1
當我們報告答案時,我們需要將
fid
和did
列值“轉換”為fid_important_string
和did_important_string
值。它們是有助於數據完整性的外鍵,但我很難理解您現在如何使用列查找將字元串從其他表中獲取到一個答案中?
謝謝。
嘗試這個
select used_for_lookup.id, used_for_lookup.datetime, fid_table.fid_important_string, did_table.did_important_string from used_for_lookup join fid_table on fid_table.id = used_for_lookup.fid join did_table on did_table.id = used_for_lookup.did where datetime between '2014-10-09' and '2014-10-11';
以下 SQL 執行您需要的連接。
select used_for_lookp.id ,used_for_lookup.datetime ,fid_table.fid_important_string ,did_table.did_important_string from used_for_lookup join fid_table on fid_table.id = used_for_lookup.fid join did_table on did_table.id = used_for_lookup.did