1

看这个解决方案: MySql Join 三表

我看到我可以通过执行以下操作来加入 3 个表:

select s.name "Student", c.name "Course"
from student s, bridge b, course c
where b.sid = s.sid and b.cid = c.cid 

但似乎我只能从每个表中选择一列?我需要加入 3 个表中的多个列,其中 sys_visits 为主表,其中 userID=contrID (sys_users, sys_visits) 和 clientID=clientID (sys_client, sys_visits)

SELECT pid, clientID, contrID, serviceDate, serviceStart, serviceStop FROM sys_visits
SELECT userGroupID, userID, fname, lname FROM sys_users
SELECT clientID, clientFName, clientLName FROM sys_client ORDER BY clientLName ASC

我已经尝试了许多变体,但似乎无法正确使用语法?

4

3 回答 3

4

改用ANSI SQL-92join 的格式。

SELECT  a.*, b.*, c.*
FROM    sys_users a
        INNER JOIN sys_visits b
            ON a.userID = b.contrlD
        INNER JOIN sys_client c
            ON b.clientID = c.clientID

在查询中使用星号表示您正在选择表中的所有列。如果您只想选择特定列,请在查询中显式声明列名,例如:

SELECT  a.userGroupID, a.userID, a.fname, a.lname,
        b.*, 
        c.*
FROM    sys_users a
        INNER JOIN sys_visits b
            ON a.userID = b.contrlD
        INNER JOIN sys_client c
            ON b.clientID = c.clientID
于 2012-12-06T03:13:07.497 回答
1

您可以从表格中选择任何数字列。

    SELECT sv.pid, sv.clientID, sv.contrID, sv.serviceDate, sv.serviceStart, sv.serviceStop, su.userGroupID, su.userID, su.fname, su.lname, sc.clientFName, sc.clientLName 
    FROM sys_visits sv, sys_users su, sys_client sc 
    ORDER BY sc.clientLName ASC

这是使用[推荐]的另一种方法JOINS

SELECT sv.pid, sv.clientID, sv.contrID, sv.serviceDate, sv.serviceStart, sv.serviceStop, su.userGroupID, su.userID, su.fname, su.lname, sc.clientFName, sc.clientLName FROM sys_visits sv
JOIN sys_users su ON su.userID = sv.contrID 
JOIN sys_client sc ON sc.clientID = sv.clientID 
ORDER BY sc.clientLName ASC
于 2012-12-06T03:12:06.400 回答
1

例如,想想你是否有三张桌子

指定,资格,专业和教师表。在这里,如果你想在教师表中加入三个表,其中包含教师 ID、教师名称、指定 ID、资格 ID、专业化 ID、状态等...
    选择
    t.name 作为teacher_name,
    d.name 作为 designation_name,
    q.name 作为qualification_name,
    s.name 作为 specialization_name
       来自教师 t
    INNER JOIN 指定 d ON t.designation_id = d.id
    INNER JOIN 资格 q ON t.qualification_id = q.id
    INNER JOIN 特化 s ON t.specialization_id = s.id
    其中 t.status = 1;
    

于 2018-03-02T18:15:34.743 回答