2011-11-08 2 views
0

누군가 제발 나를 도와 줄 수 있는지 궁금합니다.SQL 가입 문제

두 개의 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'값이 '예'인 '발견'테이블에서 모든 '사이트'테이블에서의 레코드 만 레코드를 당겨하는 방법을 잘 모르겠어요 것입니다 . 특정 조인 즉 왼쪽 또는 오른쪽이 작동하는지 여부를 확인하기 위해 조사를 해봤지만 표 사이에 공통 필드가 없기 때문에 이들이 작동하지 않는다는 것을 알고 있습니다.

아마도 누군가이 문제를 해결할 수있는 방법을 보여줄 수 있습니까?

많은 감사 테이블 구조에 대한 몇 가지 가정을 만들기

+1

테이블 사이에 공통 필드가 없으면 어떤 방식으로 서로 연결할 수 있습니까? 아마도 UNION을 찾고 있습니까? – Jodaka

+0

조인보다 [유니온] (http://dev.mysql.com/doc/refman/5.0/en/union.html)과 비슷하지만 일반적인 열은 없지만 데이터를 정렬하려면 어떻게해야합니까? (내가 테이블의 결혼을 정확하게 이해하지 않는 한) –

+1

각 테이블의 스키마는 무엇입니까? 동일하거나 동일한 필드를 선택하면 공용체를 사용할 수 있습니다. –

답변

0

모두 많은 감사. 나는 오늘이 일을 해왔고 'UNION ALL'쿼리를 사용하여 내가 가진 모든 문제를 해결했습니다. 친절한 점

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' 
+0

안녕하세요, 내 게시물에 답장을 보내 주셔서 감사합니다. '연합'은 갈 길이 멀다. 나는 너무 확신하지 못한다. 이 작업을 수행하는 이유는 '사이트'테이블에 lat 및 lng 필드가 있고 'finds'테이블에 다른 필드가 있으므로 HTML 페이지로로드 할 하나의 노드 선으로 합치고 싶습니다. 감사합니다. – IRHM

+0

@IHRM : 짐 H가 말했듯이 진지하게도 쿼리에 합리적인 방법을 제안하려면 사용하는 테이블의 구조를 확인해야합니다. –

+0

안녕하세요, 저는 이제 원래 구조에 테이블 구조를 추가했습니다. 친절한 관계로 – IRHM