Ayuda urgente, select a dos tablas

javier
09 de Diciembre del 2003
Hola, ante todo como siempre agradeceros a todos el que poco a poco vaya aprediendo a trabajar con bases de datos.
Bueno tengo un problemos y no soy capaz de salirme, no entirndo muy bien lo del inner join, bueno procedo a explicar:
tengo creadas dos tablas una entradas con campos ref,descripcion,entrada,salida,fecha y otra reservas con campos referencia,descripcion,cant_reservada,emplazamient
o,solicitado_por,fecha y observaciones), quiero hacer un inventario en el que me coja de tabla 1 referencia,descripcion,entradas, salidas, de tabla dos cant_reservada y finalmente el stock.
trabajando solo con una tabla, la de entradas y salidas, ya me funcionaba, pero con dos me da un error en el mysql_fetch_assoc y no sé por que??
por,favor me es muy urgente, si alguien me pudiera decir el porque,

Dejo el código:
<?
$connection_id = mysql_connect("localhost", "javier", "jrivsg");
if($connection_id === false)
echo "Error al conectar con el servidor MySQL.<br>";

mysql_select_db("almacen");

$result = mysql_query("select entradas.referencia, entradas.descripcion, entradas.sum(entrada) as suma_entrada, entradas.sum(salida) as sum_salida, reservas.referencia as referencia1, reservas.sum(cant_reservada) as suma_reserva from entradas, reservas group by referencia order by descripcion ", $connection_id);
if($result === false)
echo "Error al realizar la consulta SQL.<br>";


?>
<html>
<head>
<SCRIPT language="JavaScript" type="text/javascript"><!--
//Copiar entre <HEAD> y </HEAD>
window.onload=maximixar;
function maximixar(){
window.moveTo(0,0);
window.resizeTo(screen.availWidth,screen.availHeight);
}
// -->
</SCRIPT>
<title>Listado de Entradas / Salidas</title>
<meta http-equiv="" content="text/html; charset=iso-8859-1">
<meta http-equiv="" content="text/html; charset=iso-8859-1">
</head>

<body>
<table border="1">
<tr>
<td>referencia</td>
<td>descripcion</td>
<td>entradas</td>
<td>salidas</td>
<td>reservas</td>
<td>stock</td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $registro["referencia"]; ?></td>
<td><?php echo $registro["descripcion"]; ?></td>
<td align="right"><?php echo $registro["suma_entrada"]; ?></td>
<td align="right"><?php echo $registro["sum_salida"]; ?></td>
<td align="right"><?php echo $registro["suma_reserva"]; ?></td>
<td align="right"><?php echo ($registro["suma_entrada"] -$registro["sum_salida"] - $registro["suma_reserva"]); ?></td>
<?php } while ($registro = (mysql_fetch_assoc($result))); ?>
</tr>

</table>

<br><br><center><INPUT TYPE=BUTTON NAME="miBoton" VALUE="Cerrar ventana" onClick="self.close()"></center>
<br><br><center><INPUT TYPE=BUTTON NAME="miBoton1" VALUE="Imprimir página" onClick="window.print()"></center>
</body>
</html>
<?php
mysql_free_result($result);

?>


anibalgv
09 de Diciembre del 2003
tienes que relacionar las tablas bien sea con INNER JOIN cuando existen campos relacionables entre las tablas, y CROSS JOIN cuando las tablas no tienen campos que se puedan relacionar.Todo depende de lo que quieras hacer con las tablas. Es importante revisar que este bien diseñada la Base de Datos.


$result = mysql_query("select entradas.referencia, entradas.descripcion, entradas.sum(entrada) as suma_entrada, entradas.sum(salida) as sum_salida, reservas.referencia as referencia1, reservas.sum(cant_reservada) as suma_reserva from entradas CROSS JOIN reservas group by referencia order by descripcion ", $connection_id);
if($result === false)
echo "Error al realizar la consulta SQL.<br>";

javier
09 de Diciembre del 2003
Sigue sin funcionar
Lo siento, pero no lo entiendo, he cambiado el select, pot los que me habeis comentado, enlazando las tablas con where, con inner join, con cross join y no hay manera siempre me sale mysql_fetch_assoc() is not supplied arguemnt on line (en la línea del mysql_fetvh...), lo he cambiado por mysql_fectch_row...arrayy... y siempre da el mismo fallo, por dios que me corto las venas, alguien puede mirarse el código y decirme donde y por qué peta, si hago des selects independientes, me coge los datos bien de las dos tablas, lo que luego no consigo unirlos ya que en la parte de los echo para que muestr los resultados le pongo un if entradas.referencia = reservas ref. echo $result1["suma_reserva"] else echo "o" y tampoco funciona siempre me pone en el campo reservas un 0 patatero, por dios ayudaaaaaaaa urgente que no lo veoooooo

egamboac
09 de Diciembre del 2003
Intenta con esto:

$result = mysql_query("select entradas.referencia, entradas.descripcion, entradas.sum(entrada) as suma_entrada, entradas.sum(salida) as sum_salida, reservas.referencia as referencia1, reservas.sum(cant_reservada) as suma_reserva from entradas INNER JOIN reservas ON ENTRADAS.REFERENCIA
= RESERVAS.REFERENCIA ORDER BY DESCRIPCION", $connection_id);
if($result === false)


SALUDOS
ERIKA