Joining three tables using MySQL

前端 未结 9 2266
隐瞒了意图╮
隐瞒了意图╮ 2020-11-22 10:40

I have three tables named

**Student Table**
-------------
id    name
-------------
1     ali
2     ahmed
3     john
4     king

**Course Table**
------------         


        
相关标签:
9条回答
  • 2020-11-22 10:53

    Don't join like that. It's a really really bad practice!!! It will slow down the performance in fetching with massive data. For example, if there were 100 rows in each tables, database server have to fetch 100x100x100 = 1000000 times. It had to fetch for 1 million times. To overcome that problem, join the first two table that can fetch result in minimum possible matching(It's up to your database schema). Use that result in Subquery and then join it with the third table and fetch it. For the very first join --> 100x100= 10000 times and suppose we get 5 matching result. And then we join the third table with the result --> 5x100 = 500. Total fetch = 10000+500 = 10200 times only. And thus, the performance went up!!!

    0 讨论(0)
  • 2020-11-22 11:03

    Query to join more than two tables:

    SELECT ops.field_id, ops.option_id, ops.label
    FROM engine4_user_fields_maps AS map 
    JOIN engine4_user_fields_meta AS meta ON map.`child_id` = meta.field_id
    JOIN engine4_user_fields_options AS ops ON map.child_id = ops.field_id 
    WHERE map.option_id =39 AND meta.type LIKE 'outcomeresult' LIMIT 0 , 30
    
    0 讨论(0)
  • 2020-11-22 11:04
    SELECT 
    employees.id, 
    CONCAT(employees.f_name," ",employees.l_name) AS   'Full Name', genders.gender_name AS 'Sex', 
    depts.dept_name AS 'Team Name', 
    pay_grades.pay_grade_name AS 'Band', 
    designations.designation_name AS 'Role' 
    FROM employees 
    LEFT JOIN genders ON employees.gender_id = genders.id 
    LEFT JOIN depts ON employees.dept_id = depts.id 
    LEFT JOIN pay_grades ON employees.pay_grade_id = pay_grades.id 
    LEFT JOIN designations ON employees.designation_id = designations.id 
    ORDER BY employees.id;
    

    You can JOIN multiple TABLES like this example above.

    0 讨论(0)
  • 2020-11-22 11:06

    Just adding a point to previous answers that in MySQL we can either use

    table_factor syntax 
    

    OR

    joined_table syntax
    

    mysql documentation

    Table_factor example

    SELECT prd.name, b.name 
    FROM products prd, buyers b
    

    Joined Table example

    SELECT prd.name, b.name 
    FROM products prd
     left join buyers b on b.bid = prd.bid;
    

    FYI: Please ignore the fact the the left join on the joined table example doesnot make much sense (in reality we would use some sort of join table to link buyer to the product table instead of saving buyerID in product table).

    0 讨论(0)
  • 2020-11-22 11:10
    SELECT *
    FROM user u
    JOIN user_clockits uc ON u.user_id=uc.user_id
    JOIN clockits cl ON cl.clockits_id=uc.clockits_id
    WHERE user_id = 158
    
    0 讨论(0)
  • 2020-11-22 11:11

    Use ANSI syntax and it will be a lot more clear how you are joining the tables:

    SELECT s.name as Student, c.name as Course 
    FROM student s
        INNER JOIN bridge b ON s.id = b.sid
        INNER JOIN course c ON b.cid  = c.id 
    ORDER BY s.name 
    
    0 讨论(0)
提交回复
热议问题