Select

如何使用關係通過選擇提取數據

  • October 11, 2014

免責聲明:SQL 新手

我有 3 張桌子。有一個“主”表(used_for_lookup如下所示)用於查找,另外兩個(fid_table如下did_table所示)是主表中的外鍵。為了論證的緣故,下表已被簡化為問題。

數據庫操作插入到did_tableandfid_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

當我們報告答案時,我們需要將fiddid列值“轉換”為fid_important_stringdid_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

引用自:https://dba.stackexchange.com/questions/78884