PHP SQL:从三个未相互链接的表中选择字段

时间:2016-01-12 09:34:49

标签: php mysql

我目前遇到的问题是我无法链接3个单独的SQL表。以下是不同表格的相关位。

Comments
commentID userID staffID comment   comment_date
       52   1037       0 sadsadsa   2016-01-12
       54      0    1050 asda       2016-01-12

Users
userID first_name last_name 
  1036 Janet      Ang       
  1037 glenn      tan       

Staffs
staffID staffName 
   1001 Ling Ling 
   1011 Lee Ming  
   1003 Joyce     
   1010 Titus     
   1008 Vivian    
   1005 Vincent   
   1006 Alex      
   1046 Glenn     
   1047 Glenn2    
   1048 glennjr2  
   1049 glenn3    
   1050 glenn4   

我目前正试图检索用户和员工发表的评论,这三张表并没有相互关联。 "评论"表链接到"用户"和"员工"表,但"用户"和"员工"表没有链接在一起。我正在使用此查询

SELECT comments.comment, users.first_name, users.last_name, staffs.staffName, comments.comment_date 
                        FROM comments  
                        INNER JOIN users  
                        on comments.userID = users.userID 
                        LEFT OUTER JOIN staffs 
                        on comments.staffID = staffs.staffID 
                        WHERE comments.videoID = $vid_id

任何人都可以帮忙看看如何更改查询以解决我的问题?感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以对表(users,staffs)comments表使用INNER JOIN:

示例:

SELECT comments.comment, users.first_name, users.last_name, staffs.staffName, comments.comment_date
FROM comments
INNER JOIN users ON comments.userID = users.userID
INNER JOIN staffs ON comments.staffID = staffs.staffID
WHERE comments.videoID = $vid_id

在此之后,您将获得两个结果,一个用于users,另一个用于staffs

如果您需要comments所有可用或不同的用户和员工,则可以LEFT JOIN使用相同的查询。

答案 1 :(得分:1)

您可以使用UNION操作:

实施例:



( SELECT comments.comment, CONCAT(users.first_name, " ", users.last_name) as name, comments.comment_date, "User" as type
FROM comments, users 
WHERE comments.userID = users.userID
  AND comments.videoID = $vid_id )

UNION

( SELECT comments.comment, CONCAT(staffs.staffName) as name, comments.comment_date, "Staff" as type
FROM comments, staffs 
WHERE comments.staffID = staffs.staffID
  AND comments.videoID = $vid_id )