表中有三个字段,所有字段都引用另一个表中的相同字段,如下所示:
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 :(得分: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 )