SQL加入问题

时间:2011-11-08 16:37:02

标签: mysql sql join

我想知道是否有人可以帮助我。

我在试图合并来自两个mySQL数据库表的信息时遇到了问题。

我到目前为止所提出的查询如下所示。

<?php 
require("phpfile.php"); 

// Start XML file, create parent node 

$dom = new DOMDocument("1.0"); 
$node = $dom->createElement("markers"); 
$parnode = $dom->appendChild($node); 

// Opens a connection to a MySQL server 

$connection=mysql_connect ("hostname", $username, $password); 
if (!$connection) { die('Not connected : ' . mysql_error());} 

// Set the active MySQL database 

$db_selected = mysql_select_db($database, $connection); 
if (!$db_selected) { 
die ('Can\'t use db : ' . mysql_error()); 
} 

$query = "SELECT findid,
                 findosgb36lat,
                 findosgb36lon,
                 findcategory,
                 findname,
                 finddescription
          FROM   finds
          WHERE  makepublic = 'Yes'
            AND  sites.sitetype,
                 sites.sitedescription,
                 sites.siteosgb36lat,
                 sites.osgb36lon";  
$result = mysql_query($query); 
if (!$result) { 
die('Invalid query: ' . mysql_error()); 
} 

header("Content-type: text/xml"); 

// Iterate through the rows, adding XML nodes for each 

while ($row = @mysql_fetch_assoc($result)){ 
// ADD TO XML DOCUMENT NODE 
$node = $dom->createElement("marker"); 
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("findosgb36lat",$row['findosgb36lat']); 
$newnode->setAttribute("findosgb36lon",$row['findosgb36lon']); 
$newnode->setAttribute("findcategory",$row['findcategory']); 
$newnode->setAttribute("findname",$row['findname']);
$newnode->setAttribute("finddescription",$row['finddescription']);
} 

echo $dom->saveXML(); 

?>

我遇到的问题是我不知道如何从“网站”表中提取所有记录,而只是从“查找”表中提取“makepublic”值为“是”的记录。我做了一些研究,看看特定的连接,即左或右是否有效,但由于表之间没有共同字段,我知道这些不起作用。

有人可能会告诉我如何解决这个问题。

非常感谢

2 个答案:

答案 0 :(得分:0)

对表结构做出一些假设:

      SELECT s.site_id,
             s.sitetype,
             s.sitedescription,
             s.siteosgb36lat,
             s.osgb36lon,
             f.findid,
             f.findosgb36lat,
             f.findosgb36lon,
             f.findcategory,
             f.findname,
             f.finddescription
      FROM   sites s
      LEFT OUTER JOIN finds f on s.site_id = f.site_id and f.makepublic = 'Yes'

答案 1 :(得分:0)

非常感谢您对此的帮助。我今天一直在研究这个问题,并通过使用'UNION ALL'查询解决了我遇到的所有问题。亲切的问候