Foros del Web » Programando para Internet » PHP »

Mostrar datos de 4 tablas relacionadas

Estas en el tema de Mostrar datos de 4 tablas relacionadas en el foro de PHP en Foros del Web. Hola ¿Que tal? Tengo el siguiente código Código: $sql = mysql_query("SELECT inv_compras.id_producto, inv_compras.id_proveedor, inv_compras.fecha_compra, inv_compras.id_documento, inv_compras.nro_documento, inv_compras.cantidad, inv_compras.costo, inv_compras.id_glosa, inv_productos.id_producto, inv_productos.producto, inv_proveedor.id_proveedor, inv_proveedor.proveedor, inv_documentos.id_documento, inv_documentos.documento, ...
  #1 (permalink)  
Antiguo 26/02/2007, 16:06
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 17 años, 6 meses
Puntos: 0
Mostrar datos de 4 tablas relacionadas

Hola ¿Que tal?

Tengo el siguiente código
Código:
$sql = mysql_query("SELECT inv_compras.id_producto,
			inv_compras.id_proveedor,
			inv_compras.fecha_compra,
			inv_compras.id_documento,
			inv_compras.nro_documento,
			inv_compras.cantidad,
			inv_compras.costo,
			inv_compras.id_glosa,
			inv_productos.id_producto,
			inv_productos.producto,
			inv_proveedor.id_proveedor,
			inv_proveedor.proveedor,
			inv_documentos.id_documento,
			inv_documentos.documento,
			inv_glosa.id_glosa,
			inv_glosa.glosa
	FROM 	inv_compras,
			inv_productos,
			inv_proveedor,
			inv_documentos,
			inv_glosa
	WHERE 	(inv_compras.id_producto=inv_productos.id_producto)");

while ($row = mysql_fetch_array($result))

$totcompra=$row['cantidad']*$row['costo'];

echo "<table>";
echo "<td>",".$row[id_producto].","</td>"; /* inv_compras.id_producto */
echo "<td>",".$row[producto].","</td>"; /* inv_productos.producto */
echo "<td>",".$row[id_proveedor].","</td>"; /* inv_compras.id_proveedor */
echo "<td>",".$row[proveedor].","</td>"; /* inv_proveedor.proveedor */
echo "<td>",".$row[fecha_compra].","</td>"; /* inv_compras.fecha_compra */
echo "<td>",".$row[id_documento].","</td>"; /* inv_compras.id_documento */
echo "<td>",".$row[documento].","</td>"; /* inv_documentos.documento */
echo "<td>",".$row[nro_documento].","</td>"; /* inv_compras.nro_documento */
echo "<td>",".$row[cantidad].","</td>"; /* inv_compras.cantidad */
echo "<td>",".$row[costo].","</td>"; /* inv_compras.costo */
echo "<td>","$totcompra","</td>"; /* Variable que multiplica costo x cantidad */
echo "<td>",".$row[id_glosa].","</td>"; /* inv_compras.id_glosa */
echo "<td>",".$row[glosa].","</td>"; /* inv_glosa.glosa */
echo "</table>";
Bueno ese código no hace nada, y si pongo como lo que está comentario, me da error.

Cualquier ayuda sera bienvenida.
  #2 (permalink)  
Antiguo 26/02/2007, 16:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Mostrar datos de 4 tablas relacionadas

Cambia esto:
Código PHP:
while ($row mysql_fetch_array($result)) 
Por esto:
Código PHP:
while ($row mysql_fetch_array($sql)) 
  #3 (permalink)  
Antiguo 26/02/2007, 17:53
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 4 meses
Puntos: 9
Re: Mostrar datos de 4 tablas relacionadas

jeje detalle :P

al marge de esto de toy un TIP para que escribas sql mas limpios :

suponete tenes 2 tablas relacioandas

ciudad y provincias

y queres hacer una consulta q te devuelta ID_CIUDAD CIUDAD PROVINCIA

SELECT c.id, c.nombre, p.nombre as provincia
FROM ciudad c, provincia p
WHERE c.provincia_id = p.id
ORDER BY p.id ASC

Última edición por Nefertiter; 26/02/2007 a las 20:25
  #4 (permalink)  
Antiguo 26/02/2007, 18:13
Avatar de carlosmbrizuela  
Fecha de Ingreso: enero-2007
Ubicación: La Plata (Argentina)
Mensajes: 490
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: Mostrar datos de 4 tablas relacionadas

despues de la consulta debes ejecutarla
Código PHP:
$result =mysql_query($sql);
while (
$row mysql_fetch_array($result))
{} 
saludos
__________________
http://www.rollermountain.com
  #5 (permalink)  
Antiguo 26/02/2007, 18:33
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
Re: Mostrar datos de 4 tablas relacionadas

hola perdon me entrometa, el JOIN se tendria ke poner o con esa forma de consulta funciona ?
salu2 y gracias
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #6 (permalink)  
Antiguo 26/02/2007, 20:25
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 4 meses
Puntos: 9
Re: Mostrar datos de 4 tablas relacionadas

con esa forma funciona y de hecho a mi me gusta mas ^^
  #7 (permalink)  
Antiguo 27/02/2007, 06:47
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Mostrar datos de 4 tablas relacionadas

En este momento tengo así los datos:
Código:
<?php

include('conexion.php');
$link = Conectarse();

$sql = mysql_query("SELECT c.id_producto,
			id_proveedor,
			fecha_compra,
			id_documento,
			nro_documento,
			cantidad,
			costo,
			id_glosa,
			p.id_producto,
			producto,
			p2.id_proveedor,
			proveedor,
			d.id_documento,
			documento,
			g.id_glosa,
			glosa
	FROM 	inv_compras AS c,
			inv_productos AS p,
			inv_proveedor AS p2,
			inv_documentos AS d,
			inv_glosa AS g
	WHERE 	(c.id_producto=p.id_producto)");

$result = mysql_query($sql);

$contador=0;

echo "<table align=center border=1>";
echo "<th align=center>" ,"PRODUCTO","</th>";
echo "<th align=center>","PROVEEDOR","</th>";
echo "<th align=center>","FECHA","</th>";
echo "<th align=center>","DOCUMENTO","</th>";
echo "<th align=center>","CANTIDAD","</th>";
echo "<th align=center>","COSTO.","</th>";
echo "<th align=center>","TOT.COMPRA.","</th>";
echo "</table>";

while ($row = @mysql_fetch_array($result))

$totcompra=$row['cantidad']*$row['costo'];

echo "<table>";
echo "<td>",".$row[id_producto].","</td>"; /* inv_compras.id_producto */
echo "<td>",".$row[producto].","</td>"; /* inv_productos.producto */
echo "<td>",".$row[id_proveedor].","</td>"; /* inv_compras.id_proveedor */
echo "<td>",".$row[proveedor].","</td>"; /* inv_proveedor.proveedor */
echo "<td>",".$row[fecha_compra].","</td>"; /* inv_compras.fecha_compra */
echo "<td>",".$row[id_documento].","</td>"; /* inv_compras.id_documento */
echo "<td>",".$row[documento].","</td>"; /* inv_documentos.documento */
echo "<td>",".$row[nro_documento].","</td>"; /* inv_compras.nro_documento */
echo "<td>",".$row[cantidad].","</td>"; /* inv_compras.cantidad */
echo "<td>",".$row[costo].","</td>"; /* inv_compras.costo */
echo "<td>","$totcompra","</td>"; /* Variable que multiplica costo x cantidad */
echo "<td>",".$row[id_glosa].","</td>"; /* inv_compras.id_glosa */
echo "<td>",".$row[glosa].","</td>"; /* inv_glosa.glosa */

echo "</table>";
$contador+=1;

mysql_close();
?>
Agregue el @ asi @mysql_fetch_array($result)) y no da error, pero no hace nada no muestra los datos solo muestra titulos de las columnas, los que no estan todos aún, y despues unas casillas en blanco, (una tupra) solamente y nada, eso
  #8 (permalink)  
Antiguo 27/02/2007, 07:40
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Mostrar datos de 4 tablas relacionadas

claudio_hbl, estas llamando dos veces a mysql_query, la onda es:
Código PHP:
$sql "select * from tbl"#Tu query en una var
$result mysql_query$sql ); #Aca ejecutas el query
$rs mysql_fetch_assoc$result ); #Acá podes iterar si lo deseas
mysql_free_result$result ); #Liberar memoria una vez que no lo necesitas mas 
PD: Esta manera de "joinear" tablas no es la óptima, sino la "primitiva". El uso de join es mejor (esta optimizado) y mas prolijo (más aún como acá cuando no usas alias, veo que te gusta escribir :P).
Otra es usar subselect, pero depende la relación entre tablas y demás (versiones por ejemplo, y según el caso puede ser mas óptimo, por ejemplo para levantar el país del usuario).
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #9 (permalink)  
Antiguo 27/02/2007, 11:31
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Mostrar datos de 4 tablas relacionadas

Ante todo gracias por las respuestas
no te entendí, porque en todos los otros archivos lo tengo así,
[CODE]nclude('conexion.php');
$link = Conectarse();

$sql = " SELECT id_cliente, nombre, apellidos, email, fono, movil, domicilio, ciudad, pais, sector, fecha_nacimiento, estado FROM mip_clientes ";

$result = mysql_query($sql);
while ($row = mysql_fetch_array($result))/CODE]

solo que en este por estar las tablas relacionadas, no sé como hacerlo, sobre lo que dices de las P, se supone que son los alias, hay 2 porque trato de usar la inicial de la tabla, p=inv_producto y p2=inv_proveedores
  #10 (permalink)  
Antiguo 27/02/2007, 11:34
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 4 meses
Puntos: 9
Re: Mostrar datos de 4 tablas relacionadas

claudio esta bastante claro en el codigo los alias los declaras al momento de definir el "FROM"

FROM ciudad c, provincia p
  #11 (permalink)  
Antiguo 27/02/2007, 11:59
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Mostrar datos de 4 tablas relacionadas

Claro, además de que tenes:
Código PHP:
$sql mysql_query("SELECT c.id_producto,
            id_proveedor,
            fecha_compra,
            id_documento,
...
"
); 
En vez de
Código PHP:
$sql "SELECT c.id_producto,
            id_proveedor,
            fecha_compra,
            id_documento,
...
"

__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #12 (permalink)  
Antiguo 27/02/2007, 12:51
 
Fecha de Ingreso: octubre-2006
Ubicación: Valparaiso Chile
Mensajes: 228
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Mostrar datos de 4 tablas relacionadas

Borré mysql_query(, pero da lo mismo, aún sigue sin mostrar los datos, que puede ser?
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 09:11.