从3个表中加入多个列

问题描述 投票:1回答:3

看看这个解决方案:MySql Join three tables

我看到我可以通过这样做来加入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

我尝试了很多变化,似乎无法使语法正确?

mysql
3个回答
4
投票

改为使用ANSI SQL-92格式的连接。

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

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

1
投票

想想你是否有三张桌子

designation,qualification,specialization and teacher table.Here if you want to join three tables inside teacher table that has teacher_id, teacher_name, designation_id, qualification_id , specialization_id ,status etc...
    SELECT 
    t.name as teacher_name,
    d.name as designation_name,
    q.name as qualification_name,
    s.name as specialization_name
       FROM teachers t
    INNER JOIN designation d ON t.designation_id = d.id
    INNER JOIN qualification q ON t.qualification_id = q.id
    INNER JOIN specialization s ON t.specialization_id = s.id
    WHERE t.status = 1;
    
© www.soinside.com 2019 - 2024. All rights reserved.