处理两个表的SQL查询的逻辑问题

时间:2014-04-20 00:32:35

标签: mysql sql sql-server

道歉,因为我对SQL很新,但我很难找到问题的解决方案。

我有两张表格如下:

评论表

  

列:姓名,评论,评级a,评级b,评级c,venue_id

地点表

  

列:id,venue_name,description,address

我想从场地表中获取同一行中的ID与评论表中的场地ID匹配的名称,这可能吗? (the venue_id和id匹配)

例如,如果我打印这个我会

venue_name       (from the venue table)
rating a         (from the comment table)
rating b         (from the comment table)
rating c         (from the comment table) 

(通过评论表中的场地ID和场地表中的ID链接到venue_name的评级)

如果这没有意义,那么道歉,但如果可能的话,我会感激一些帮助。 感谢

4 个答案:

答案 0 :(得分:1)

使用简单连接查询。 SELECT Venue.venue_name, Comment.rating_a, Comment.rating_b, Comment.rating_c FROM Venue INNER JOIN Comment ON Venue.id=Comment.venue_id;

这会给你:

  • venue_name(来自会场表)
  • 评分a(来自评论表)
  • 评级b(来自评论表)
  • 评级c(来自评论表)

答案 1 :(得分:0)

select Venue.venue_name, 
rating_a, rating_b, 
rating_c from Venue, 
Comment 
where Comment.venue_id = Venue.id;

说明:

Venue.venue_name和三个rating_标识符都告诉SQL要输出哪些列(注意:您可能必须在三个评级列前面添加注释。但我认为它可以不用,因为这些列是唯一命名)。

from语句必须包含要从中绘制数据的每个表(无论是显示还是where子句)。

最后,where子句是Venue中的行如何与Comment中的行相关联(它们共享一个公共的venue_id)。您需要确保Venue中的venue_id是主键(理想情况下,将其设置为auto_increment)

答案 2 :(得分:0)

您可能需要在场地表中设置id的引用键。只需将venue_id作为主键,并将其引用到Venue表中的id。

所以sql查询将是 -

SELECT venue.venue_name, 
rating_a.comment, 
rating_b.comment
FROM venue, comment
INNER JOIN venue
ON Comment.venue_id = Venue.id;

或只使用

select Venue.venue_name, 
rating_a, 
rating_b
from Venue, Comment
where Comment.venue_id = Venue.id;

首先要注意的是,当连接这两个表时,您需要设置主键和外键...为Venue表设置主键,然后设置外键。您可以将Venue表的主键设置为自动增量,然后将外键作为-id-引用到Comment表中的venue_id。

答案 3 :(得分:0)

您可以使用SQL JOIN

尝试

SELECT s.*, AS venue_name 
FROM venuetable s 
LEFT JOIN commenttable  
AS r 
ON r.venue_id