如何使用连接条件编写正确的SQL查询语句?

时间:2011-04-24 06:35:31

标签: 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语句来检索三个字段的信息?

4 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:0)

你的问题有点不清楚,但我猜你有一个包含三个字段的表A,每个字段都标识了表B中的一行(可能是不同的)。你想从每一行中检索信息。表B基于表A的单行的字段值。

为此,您需要将表A连接到表B三次,对表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  ...

答案 3 :(得分: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 )