从3个mysql表中加入数据(语法)

时间:2013-08-11 16:21:30

标签: mysql sql join

我正在尝试从3个表中获取数据,并加入2个不同的值。我习惯了Oracle,并且在别名方面做错了。有人可以帮我这个吗?

SELECT r.idreservation, r.first, r.last, r.StartDay, r.NumberOfDays, g.First, g.Last, l.location
  FROM reservation r, guides g, Locations l 
  WHERE r.guide = g.idguides 
    AND r.location = l.idlocations 
    AND r.StartDay >= dateString

我是否需要在dateString周围使用单引号? r.StartDay的类型为DATE。

2 个答案:

答案 0 :(得分:1)

SELECT r.idreservation, r.first, 
 r.last, 
 r.StartDay, 
 r.NumberOfDays, 
 g.First, 
 g.Last, 
 l.location
 FROM reservation r, 
 guides g, 
 Locations l
 WHERE r.guide = g.idguides AND 
 r.location = l.idlocations AND 
 r.StartDay >= dateString

OR

SELECT r.idreservation, r.first, 
 r.last, 
 r.StartDay, 
 r.NumberOfDays, 
 g.First, 
 g.Last, 
 l.location
 FROM reservation r 
 INNER JOIN  guides g
 ON r.guide = g.idguides
 INNER JOIN  Locations l
 ON r.location = l.idlocations
 WHERE r.StartDay >= dateString;

答案 1 :(得分:1)

好的,我明白了:你可能只有一些“引号”问题:

"SELECT r.idreservation, "r.first, "
                         ^   

+ "r.StartDay >= "+dateString"
                 ^

作为捕获这些错误的提示,您应该在同一“行”上只有偶数引号。可能您必须使用简单引用来分隔双引号字符串中的字符串。

作为最后的建议,如果您的宿主程序语言允许这样做,那么多行字符串可能会像您一样更具可读性。此外,这将避免在您的示例中出现“遗失空间”错误(请参阅注释)。