2008-11-11 90 views
1

我想知道是否可以從一個表中選擇某些列,並從另一個表中選擇與第一個表中的非導入列相關的另一列。我必須從訪問中獲取這些數據,並且不知道這是否可以使用Access或SQL。來自兩個表的SQL語句

回答

6

假設下面的表結構:

CREATE TABLE tbl_1 (
    pk_1 int, 
    field_1 varchar(25), 
    field_2 varchar(25) 
); 

CREATE TABLE tbl_2 (
    pk_2 int, 
    fk_1 int, 
    field_3 varchar(25), 
    field_4 varchar(25) 
); 

您可以使用下列內容:

SELECT t1.field_1, t2.field_3 
FROM tbl_1 t1 
INNER JOIN tbl_2 t2 ON t1.pk_1 = t2.fk_1 
WHERE t2.field_3 = "Some String" 

至於比爾的帖子,有兩種方法來創建SQL查詢中使用JOIN的:

  • 隱式 - 聯接是使用 創建的,該段的WHERE子句使用多個表ERY在被指定的FROM子句

  • 顯 - 使用 適當類型JOIN子句的,創建加入 (INNER,LEFT,RIGHT,FULL)

始終建議您使用顯式JOIN語法作爲隱式聯接可能會導致問題一旦查詢變得更加複雜。例如,如果稍後向已在FROM子句中引用多個表的已使用隱式連接的查詢添加顯式連接,則FROM子句中引用的第一個表對於顯式連接表將不可見。

+1

內部加入將只選擇在兩個表中都匹配的記錄。在某些情況下,左連接可能更好(http://www.devshed.com/c/a/MySQL/Understanding-SQL-Joins/) – Fionnuala 2008-11-11 13:40:26

2

什麼你所尋找的是聯接:

http://en.wikipedia.org/wiki/Join_(SQL)

您需要在第一個表中引用的數據集和外鍵的主鍵。

+0

主鍵和外鍵不是嚴格必要的。 – 2008-11-11 13:20:33

+0

但建議(至少如果你問我;-) – okoman 2008-11-11 13:26:50

+0

當然,我可以同意這一點。但你的答案中確實表示「需要」。 – 2008-11-11 13:53:15

0

我不是100%確定我理解你的問題。

以下爲真:

您的第一張表是從其他地方導入的。 您只導入了一些列。 你想建立一個查詢引用一個你還沒有導入的列。

如果這是真的,這是不可能的。至於涉及非導入列的Access查詢引擎不存在。

爲什麼不只是導入它們呢?

0

但主鍵使查詢效率更高