2016-09-15 58 views
1

这个查询有什么问题吗?我都在工作,直到我截断了我的数据库,现在我只有一条记录,当我在phpmyadmin中运行此查询时,它返回0行。多个表格没有返回行的内部联接

我错过了什么?

SELECT 
Users.id, 
Users.firstname, 
Users.lastname, 
Users.email, 
Users.age, 
Users.phone, 
Universities.Faculty AS university, 
Internship.internship_type AS Internship, 
City.city AS city, 
Interest.interest AS interest, 
Users.filename, 
Users.reg_date 
     FROM Users 
     INNER JOIN City ON Users.city = City.key 
     INNER JOIN Universities ON Users.university = Universities.id 
     INNER JOIN Interes ON Users.interest = Interest.key 
     INNER JOIN Internship ON Users.internship_type = Internship.internship_type 
      ORDER BY `Users`.`id` ASC; 
+0

该用户是否有兴趣/实习并且在大学?否则,请使用'LEFT OUTER JOIN' –

+0

在用户表中它包含所有信息,所有列都填入正确的数据。 – Daniel

回答

2

有可能不会在所有的表中的数据,以便您可以通过使用左连接,并确保至少用户表必须有数据检查:然后逐个改变左加入到内,你不会得到数据会出现问题,但如果其他表的数据是可选的,那么最好使用左连接:

SELECT 
    Users.id, 
    Users.firstname, 
    Users.lastname, 
    Users.email, 
    Users.age, 
    Users.phone, 
    Universities.Faculty AS university, 
    Internship.internship_type AS Internship, 
    City.city AS city, 
    Interest.interest AS interest, 
    Users.filename, 
    Users.reg_date 
FROM Users 
LEFT JOIN City ON Users.city = City.key 
LEFT JOIN Universities ON Users.university = Universities.id 
LEFT JOIN Interes ON Users.interest = Interest.key 
LEFT JOIN Internship ON Users.internship_type = Internship.internship_type 
ORDER BY `Users`.`id` ASC; 
+0

问题出现在这里,它应该是'Internship ON Users.internship_type = Internship.key',它是'INNER JOIN实习ON Users.internship_type = Internship.internship_type' – Daniel

+0

你最后也可以在你的帖子中看到错误左加入。这就是我注意到的。谢谢:) – Daniel

+0

这就是你所问的问题,我刚刚改变的是INNER到LEFT,但我从一开始就得到了同样的结果,我没有任何区别,或者没有正确理解。 – Susang