Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

ayuda muy muy urgente con un select a dos tablas

Estas en el tema de ayuda muy muy urgente con un select a dos tablas en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/12/2003, 06:09
 
Fecha de Ingreso: septiembre-2003
Ubicación: Barcelona
Mensajes: 41
Antigüedad: 20 años, 7 meses
Puntos: 0
ayuda muy muy urgente con un select a dos tablas

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.availHeig ht);
}
// -->
</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);

?>
  #2 (permalink)  
Antiguo 08/12/2003, 17:55
 
Fecha de Ingreso: septiembre-2003
Mensajes: 33
Antigüedad: 20 años, 7 meses
Puntos: 0
creo que debes cambiar el codigo asi:

while($row = mysql_fetch_row($result){
....
}
mysql_free_result($result);
__________________
www.LatinDevelopers.com
  #3 (permalink)  
Antiguo 09/12/2003, 04:37
 
Fecha de Ingreso: septiembre-2003
Ubicación: Barcelona
Mensajes: 41
Antigüedad: 20 años, 7 meses
Puntos: 0
no funciona

hola,

cambiar por el mysql_fetch_row, me da el mismo error, en el mysql_fetch..., creo que el error está en el select, pero no lo veo

por favor ayuda, despues de un fin de semana estoy desesperado, he probado con join, union.... y no funciona nolo veoooo

Gracias por anticipado a algun alma caritativa que me diga donde la cago.
  #4 (permalink)  
Antiguo 09/12/2003, 07:06
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Imprime el error que te de, de todas formas creo que el error seguramente estará en el group by prueba a quitarlo y di que pasa.
  #5 (permalink)  
Antiguo 09/12/2003, 08:11
 
Fecha de Ingreso: diciembre-2003
Mensajes: 34
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola:

Creo que el problema puede estar en la consulta SQL:

$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);

Aquí no veo en ninguna parte a través de qué campo unes las tablas, ésto puedes indicarlo en una claúsula WHERE o utilizando un INNER JOIN.

Con WHERE:
$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 WHERE entradas.referencia = reservas.referencia group by referencia order by descripcion ", $connection_id);

Con INNER JOIN:
$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 group by referencia order by descripcion ", $connection_id);


Espero que te sirva de ayuda.

Saludos
  #6 (permalink)  
Antiguo 09/12/2003, 08:41
 
Fecha de Ingreso: enero-2002
Mensajes: 90
Antigüedad: 22 años, 3 meses
Puntos: 0
creo que estas incluyento campos el la intrucción SELECT
que no le haces referencia en la intrucción GROUP BY . o no estan como argumentos de una función SQL agregada.

ejemplo de group by

SELECT t1.Status, count(*) as total
FROM Tabla1 as t1
WHERE (t1.campox= x)
GROUP BY t1.Status
ORDER BY t1.Status


si quieres traer otros campos que no estan incluidos en la intrucción GROUP BY . por ejemplo en ACCESS se utiliza la función
FIRST

ejmplo:

SELECT first(t1.campo_y), t1.Status, count(*) as total
FROM Tabla1 as t1
WHERE (t1.campox= x)
GROUP BY t1.Status
ORDER BY t1.Status
  #7 (permalink)  
Antiguo 09/12/2003, 08:52
 
Fecha de Ingreso: enero-2002
Mensajes: 90
Antigüedad: 22 años, 3 meses
Puntos: 0
ejemplo:
haber si te puede ayudar

SELECT re.codigo, count(*) as total
FROM Maestro_Formulario as ms
INNER JOIN requerimiento as re
ON ms.solicitud_n = re.solicitud_n
WHERE re.campos_x=x1
GROUP BY re.codigo
  #8 (permalink)  
Antiguo 09/12/2003, 12:15
 
Fecha de Ingreso: septiembre-2003
Ubicación: Barcelona
Mensajes: 41
Antigüedad: 20 años, 7 meses
Puntos: 0
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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:25.