从多个表中选择返回空结果

时间:2011-01-30 12:38:53

标签: mysql sql database

SELECT * 
  FROM traffic,alexat,bindx,blink 
 WHERE traffic.web = alexat.web 
   AND traffic.web = bindx.web 
   AND traffic.web = blink.web 
   AND traffic.web="mysql_real_escape_string($web)"

当我搜索google.com并且如果一个或任何表没有任何与google.com相关的数据时,则整个结果将返回空。但如果所有表格都有关于google.com的数据,那么它会毫无问题地返回。我该如何解决这个问题?即使只有一个表有数据,我也希望得到结果。

2 个答案:

答案 0 :(得分:1)

您需要使用LEFT OUTER JOIN

这样的事情:

SELECT * 
  FROM traffic LEFT OUTER JOIN alexat USING (web)
  LEFT OUTER JOIN bindx USING (web)
  LEFT OUTER JOIN blink USING (web) 
 WHERE traffic.web="mysql_real_escape_string($web)"

答案 1 :(得分:0)

您需要外部联接。请查看http://en.wikipedia.org/wiki/Join_(SQL)

上的各种选项