我想知道是否有人可以帮助我。
我在试图合并来自两个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”值为“是”的记录。我做了一些研究,看看特定的连接,即左或右是否有效,但由于表之间没有共同字段,我知道这些不起作用。
有人可能会告诉我如何解决这个问题。
非常感谢
答案 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'查询解决了我遇到的所有问题。亲切的问候