Problemas de unión SQL

Me pregunto si alguien podría ayudarme por favor.

Tengo un problema al intentar amalgamar información de dos tablas de base de datos mySQL.

La consulta que he elaborado hasta ahora se muestra a continuación.

<?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(); 

?>

El problema que tengo es que no estoy seguro de cómo extraer todos los registros de la tabla 'sitios', sino solo aquellos registros de la tabla 'hallazgos' donde el valor 'makepublic' es 'sí'. He investigado un poco para ver si una combinación específica, es decir, la izquierda o la derecha, funcionará, pero como no hay un campo común entre las tablas, sé que no funcionarán.

¿Podría alguien mostrarme cómo puedo solucionar este problema, por favor?

Muchas gracias

preguntado el 08 de noviembre de 11 a las 16:11

Si no hay un campo común entre las tablas, ¿de qué manera espera que se asocien entre sí? ¿Quizás estás buscando UNION? -

Suena más como un unión que una combinación, pero sin una columna común, ¿cómo anticipa que se alinearán los datos? (A menos que no entienda correctamente el matrimonio de las tablas) -

¿Cuál es el esquema de cada tabla? Si son iguales o si selecciona campos equivalentes, puede usar una unión. -

ps Dependiendo del rendimiento, puede tener sentido establecer el DOM solo cuando lo necesite, no antes de establecer la base de datos. (No lo use para crear un DOM si / cuando no se puede establecer una conexión SQL) -

2 Respuestas

Haciendo algunos a lo grande supuestos sobre estructuras de tablas:

      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'

respondido 08 nov., 11:21

Hola, muchas gracias por responder a mi publicación. Una "Unión" puede ser el camino a seguir, no estoy muy seguro. La razón detrás de hacer esto es que tengo campos lat y lng en la tabla 'sitios' y otro conjunto en la tabla 'hallazgos' que quiero probar y fusionar en una línea de nodo que luego cargaré en una página HTML. Atentamente - IRHM

@IHRM: En serio, como dijo Jim H, realmente necesitamos ver las estructuras de las tablas que está utilizando si queremos sugerir un enfoque razonable para consultarlas. - usuario359040

Hola, ahora agregué las estructuras de la tabla a mi publicación original. Atentamente - IRHM

@IHRM: ¿dónde? No puedo verlos y no se muestra que hayas modificado tu publicación original. - usuario359040

muchas gracias por su ayuda en esto. He estado trabajando en esto hoy y he resuelto todos los problemas que tenía utilizando una consulta 'UNION ALL'. Atentamente

respondido 09 nov., 11:20

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.