2011-04-24 36 views
0

有三個字段的表,所有的人都指同場的另一個表,如下所示:如何使用連接條件編寫正確的SQL查詢語句?

table1 
------- 
! a_term_id* ! b_term_id* ! c_term_id* ! 
!   !   !   ! 

table2 
------- 

! term_id ! term_title ! term_description ! 
! ------- !   !     ! 

列a_term_id,b_term_id,c_term_id都是指term_id

我應該怎麼寫SQL語句檢索三個字段的信息?

+0

你的問題不明確。你能用例子來詳細說明嗎? – 2011-04-24 06:37:29

+0

請更清楚 – sym3tri 2011-04-24 06:42:05

+0

一個表的模式是:a_term_id,b_term_id,c_term_id,另一個表的模式是:term_id,term_title,term_description,fileds a_term_id,b_term_id,c_term_id都是指term_id,所以我該如何寫sql語句檢索三個字段的信息? – David 2011-04-24 06:45:07

回答

1

我想你需要知道Sql_Join是如何工作的。在這裏W3Schools你可以找到有用的例子。

一個簡單的例子:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo 
FROM Persons 
INNER JOIN Orders 
ON Persons.P_Id=Orders.P_Id 
ORDER BY Persons.LastName 

編輯

你可以嘗試這樣的:

SELECT * FROM tableA 
inner join tableB on tableA.term_id = tableB.term_id 
inner join tableC on tableA.term_id = tableC.term_id; 

它,你可以根據自己的需要修改的例子。


編輯2

SELECT * FROM tableB 
JOIN tableA AS tableA1 ON tableB.term_id = tableA1.a_term_id 
JOIN tableA AS tableA2 ON tableB.term_id = tableA2.b_term_id 
JOIN tableA AS tableA3 ON tableB.term_id = tableA3.c_term_id 
+0

但情況是一個表中的多個字段引用另一個表中的同一個字段,sql連接語句是否與您的示例中使用的語句不同? – David 2011-04-24 06:51:58

+0

@David:請參閱答案中的編輯。 – 2011-04-24 06:58:07

+0

看起來有三個表格:你的例子中的問題,答案,考試。但我的情況只有兩張桌子。 – David 2011-04-24 06:59:19

0

下面是一個例子。假設我們有兩個表 - 員工與公司:

CREATE TABLE Employees(
    Id int, 
    Name varchar(128), 
    CompanyId int); 

CREATE TABLE Companies( 
    Id int, 
    Name varchar(128), 
    Address varchar(1024), 
    DateFounded datetime); 

下面的SQL查詢將加入的表:

SELECT * FROM Employees 
    INNER JOIN Companies 
    ON Employees.CompanyId = Companies.Id 
+0

我的情況在表中有多個字段引用另一個表中的相同字段。 – David 2011-04-24 07:05:35

0

你的問題是有點不清楚,但我會想,你有一個表A具有三個字段,其中每個字段標識表B的(可能不同的)行。您希望基於表A的單個行的字段值從每個表B的行檢索信息。

要做到這一點,您需要三次將表A連接到表B s,爲表A的每個字段分配一次。應爲每個連接分配一個別名,然後可以通過限定的字段名稱引用連接表中的字段。

SELECT b1.info, b2.info, b3.info 
FROM A JOIN B AS b1 ON field1 = b1.field 
     JOIN B AS b2 ON field2 = b2.field 
     JOIN B AS b3 ON field3 = b2.field 
WHERE ... 
0
SELECT 
t.a_term_id, a.term_title, a.term_description, 
t.b_term_id, b.term_title, b.term_description, 
t.c_term_id, c.term_title, c.term_description 
FROM abc_terms t JOIN (terms_info a, terms_info b, terms_info c) 
ON (t.a_term_id = a.term_id 
AND t.b_term_id = b.term_id 
AND t.c_term_id = c.term_id)