Foros del Web » Programando para Internet » PHP »

Como puedo cojer los valores de tres tablas??

Estas en el tema de Como puedo cojer los valores de tres tablas?? en el foro de PHP en Foros del Web. Hola necesito vuestra ayuda porque levo ya dos dias y no se como hacerlo a ver necesito cojer distintos valores de tres tablas diferentes y ...
  #1 (permalink)  
Antiguo 25/05/2011, 03:59
Avatar de sylwiatam  
Fecha de Ingreso: abril-2011
Mensajes: 35
Antigüedad: 13 años
Puntos: 0
Información Como puedo cojer los valores de tres tablas??

Hola necesito vuestra ayuda porque levo ya dos dias y no se como hacerlo a ver necesito cojer distintos valores de tres tablas diferentes y juntarlos en una, ya que lo que quiero hacer es una consulta. La consulta tiene que visualizar Nombre_Menu,Precio_Menu,Nombre_Producto,Unidades_P roducto. os dejo los datos de las tablas: de la tabla detalle_menu tengo que cojer Codigo_Menu y Codigo_Producto y las Unidades creo esq tengo un lio. a ver dejo las tablas:


INSERT INTO `detalle_menu` (`Codigo_Producto`, `Codigo_Menu`, `Unidades_Producto`) VALUES
('026', 1, 1),
('021', 1, 1),
('029', 3, 1),
('027', 4, 1),
('025', 4, 1),
('030', 2, 2),
('023', 2, 4),
('025', 3, 1),
('029', 5, 1),
('024', 5, 2);



La segunda tabla es menu:Hacedo con el Codigo_Menu que a su vez tiene Codigo_Producto.


INSERT INTO `menu` (`Codigo_Menu`, `Nombre_Menu`, `Precio_Menu`) VALUES
(1, 'Menu Infantil', 3.99),
(2, 'Menu Familiar', 10.99),
(3, 'Menu Verano', 6.99),
(4, 'Menu Especial', 7.99),
(5, 'Menu economico', 4.99);


y esta es la del os productos: Hacedo con el Codigo_Producto.



INSERT INTO `producto` (`Codigo_Producto`, `Nombre_Producto`, `Descripcion_Producto`, `PVP_Producto`, `Unidades_en_Almacen`) VALUES
('001', 'Aritos de cebolla 250g', 'Aritos de cebolla', 2.99, 20),
('002', 'Aritos de cebolla 500g', 'Aritos de cebolla', 3.5, 30),
('003', 'Aritos de cebolla 1kg', 'Aritos de cebolla ', 5, 14),
('004', 'patatas fritas 250g', 'patatas fritas', 1, 20),
('005', 'patatas fritas 500g', 'patatas fritas', 2.75, 30),
('006', 'patatas fritas 1kg', 'patatas fritas', 5.3, 5),
('007', 'pizza barbacoa pequeña', 'pizza barbacoa', 7.99, 5),
('008', 'pizza barbacoa mediana', 'pizza barbacoa', 12, 5),
('009', 'pizza barbacoa grande', 'pizza barbacoa ', 16, 5),
('010', 'pizza barbacoa gigante', 'pizza barbacoa', 21, 5),
('011', 'pizza jamon y queso peque', 'pizza jamon y queso', 7.99, 10),
('012', 'pizza jamon y queso media', 'pizza jamon y queso', 12.5, 10),
('013', 'pizza jamon y queso grand', 'pizza jamon y queso', 18, 8),
('014', 'pizza jamon y queso gigan', 'pizza jamon y queso', 22.5, 10),
('015', 'pizza bacon atun pequeña', 'pizza bacon atun', 7.8, 6),
('016', 'pizza bacon atun mediana', 'pizza bacon atun', 10, 8),
('017', 'pizza bacon atun grande', 'pizza bacon atun', 15, 6),
('018', 'pizza bacon atun gigante', 'pizza bacon atun', 20, 20),
('019', 'cerveza pequeña', 'cerveza', 3, 14),
('020', 'cerveza grande', 'cerveza', 4.5, 14),
('021', 'coca cola 33cl', 'refresco coca cola lata de 33 cl paquete 20', 0.99, 30),
('022', 'fanta naranja', 'refresco fanta naranja lata 33cl paquete 20 uds', 0.99, 30),
('023', 'coca cola light 33cl', 'refresco coca cola light 33 cl paquete 20 uds', 0.99, 20),
('024', 'coca cola zero 33 cl', 'refresco coca cola zero 33 cl paquete 20 uds', 0.99, 12),
('025', 'fanta limon 33 cl', 'refresco fanta limon 33 cl paquete 20 uds', 0.99, 10),
('026', 'Pizza Margarita Pequeña', 'Mozzarella,Tomate,Oregano', 7, 0),
('027', 'Pizza Margarita Mediana', 'Mozarella,Tomate,Oregano', 12, 0),
('028', 'Pizza Margarita Grande', 'Mozarella,Tomate,Oregano', 18, 0),
('029', 'Pizza Hawayana Mediana', 'Mozarella,Piña,Jamon York', 8, 0),
('030', 'Pizza Hawayana Grande', 'Mozarella,Piña,Jamon York', 16, 5),
('031', 'Pizza Caprichosa Mediana', 'Mozarella,Oregano,Jamon York,Bacon,Ternera,Champiñ', 0.99, 0),
('032', 'Pizza Caprichosa Grande', 'Mozarella,Oregano,Jamon York,Bacon,Ternera,Champiñ', 0.99, 0),
('033', 'Pizza Barbacoa Pequeña', 'Salsa Barbacoa,Mozarella,Oregano,Ternera,Bacon,Mai', 0.99, 0),
('034', 'Pizza Barbacoa Mediana', 'Salsa Barbacoa,Mozarella,Oregano,Ternera,Bacon,Mai', 0.99, 0),
('035', 'Pizza Diabola Mediana', 'Mozarella,Bacon,Aceituna,Tabasco,Guindilla Picante', 0.99, 0);

Se supone que tienen que aparecer los productos que coinciden con el menu y precio del menu.


Este es el codigo que intente hacer una chapuza ya lo se pero no se como hacerlo ayuden porafa :(


<style type="text/css">
<!--
body,td,th {
color: #000000;
}
body {
background-color: #CCCCCC;
}
-->
</style><?php
$servidor="localhost";
$basededatos="bd_pizzeria";
$usuario="root";
$password="";

$conexion=mysql_connect($servidor, $usuario, $password)
or die ("No se pudo realizar la conexión al servidor");
mysql_select_db($basededatos)
or die ("No se pudo abrir la base de datos");

echo "<body bgcolor=\"#5080e7\">";
echo "<center><font size=6 color=blue>Consulta de Menu<br><BR></font>";



$c1="SELECT Cdigo_Menu, Codigo_Producto ,Unidades_Producto, Nombre_Producto, Nombre_menu ,Precio_Menu FROM detalle_menu A,producto B ,menu C WHERE Codigo_Producto=026 AND Codigo_Producto A= Codigo_Menu A AND Codigo_Menu A=Nombre_Menu C AND Codigo_Producto B= Nombre_Producto B";
echo $c1;
$r1=mysql_query($c1);
$num_campos=mysql_num_fields($r1);

echo "<table border=\"1\">";
echo "<tr>";

//$valores=array('Nombre_Menu','Precio_Menu','Nombre _Producto','Unidades_Producto');
$valores=array ('Cdigo_Menu','Codigo_Producto','Unidades_Producto ','Nombre_Producto','Nombre_menu','Precio_Menu');

for ($i=0;$i<$num_campos;$i++){
echo "<td>";
echo $valores[$i];
echo "</td>";
}
echo "</tr>";

while ($fila1=mysql_fetch_array($r1)){
echo "<tr>";
for ($i=0;$i<$num_campos;$i++){
echo "<td>";
echo $fila1[$i];
echo "</td>";
}
echo "</tr>";
}





// $c1="SELECT Nombre_Menu,Precio_Menu,Nombre_Producto,Unidades_P roducto FROM menu,producto,detalle_pedido_cliente";
/* $r1=mysql_query($c1);
$num_campos=mysql_num_fields($r1);

echo "<table border=\"1\">";
echo "<tr>";

$valores=array('Nombre_Menu','Precio_Menu','Nombre _Producto','Unidades_Producto');


for ($i=0;$i<$num_campos;$i++){
echo "<td>";
echo $valores[$i];
echo "</td>";
}
echo "</tr>";

while ($fila1=mysql_fetch_array($r1)){
echo "<tr>";
for ($i=0;$i<$num_campos;$i++){
echo "<td>";
echo $fila1[$i];
echo "</td>";
}
echo "</tr>";
}


/*
/* $c2="SELECT Nombre_Producto FROM producto";
$r2=mysql_query($c2);
$num_campos=mysql_num_fields($r2);

echo "<table border=\"1\">";
echo "<tr>";

$valores=array('Nombre_Producto');


for ($i=0;$i<$num_campos;$i++){
echo "<td>";
echo $valores[$i];
echo "</td>";
}
echo "</tr>";

while ($fila1=mysql_fetch_array($r2)){
echo "<tr>";
for ($i=0;$i<$num_campos;$i++){
echo "<td>";
echo $fila1[$i];
echo "</td>";
}
echo "</tr>";
}
*/

echo "</body>";

?>
  #2 (permalink)  
Antiguo 25/05/2011, 05:56
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: Como puedo cojer los valores de tres tablas??

hola, buenas prueba poniendo esta consulta
la que tienes puesta tiene errores

SELECT Cdigo_Menu, Codigo_Producto ,Unidades_Producto, Nombre_Producto, Nombre_menu ,Precio_Menu FROM (detalle_menu INNER JOIN producto on detalle_menu.Codigo_Producto=producto.Codigo_Produ cto)INNER JOIN menu on detalle_menu.Codigo_Menu = menu.Codigo_Menu WHERE detalle_menu.Codigo_Producto='026'

saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #3 (permalink)  
Antiguo 25/05/2011, 10:12
Avatar de sylwiatam  
Fecha de Ingreso: abril-2011
Mensajes: 35
Antigüedad: 13 años
Puntos: 0
Respuesta: Como puedo cojer los valores de tres tablas??

Hola me sigue sin funcionar ahora me dice estos errores:


Warning: mysql_num_fields() expects parameter 1 to be resource, boolean given in H:\wamp\www\consulta_menu2\consulta_menu.php on line 26


Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in H:\wamp\www\consulta_menu2\consulta_menu.php on line 41



y he copiado lo que me dijiste rodno quedo asi:

<style type="text/css">
<!--
body,td,th {
color: #000000;
}
body {
background-color: #CCCCCC;
}
-->
</style><?php
$servidor="localhost";
$basededatos="bd_pizzeria";
$usuario="root";
$password="";

$conexion=mysql_connect($servidor, $usuario, $password)
or die ("No se pudo realizar la conexión al servidor");
mysql_select_db($basededatos)
or die ("No se pudo abrir la base de datos");

echo "<body bgcolor=\"#5080e7\">";
echo "<center><font size=6 color=blue>Consulta de Todos los Pedidos - En ejecución<br><BR></font>";

$c1="SELECT Cdigo_Menu, Codigo_Producto ,Unidades_Producto, Nombre_Producto, Nombre_menu ,Precio_Menu FROM (detalle_menu INNER JOIN producto on detalle_menu.Codigo_Producto=producto.Codigo_Produ cto)INNER JOIN menu on detalle_menu.Codigo_Menu = menu.Codigo_Menu WHERE detalle_menu.Codigo_Producto='026'";
$r1=mysql_query($c1);
$num_campos=mysql_num_fields($r1);

echo "<table border=\"1\">";
echo "<tr>";

$valores=array('Nombre_Menu','Precio_Menu','Codigo Pizzero','Nombre_Producto','Unidades_Producto');


for ($i=0;$i<$num_campos;$i++){
echo "<td>";
echo $valores[$i];
echo "</td>";
}
echo "</tr>";

while ($fila1=mysql_fetch_array($r1)){
echo "<tr>";
for ($i=0;$i<$num_campos;$i++){
echo "<td>";
echo $fila1[$i];
echo "</td>";
}
echo "</tr>";
}

echo "</body>";

?>


Lo de $c1 lo tengo que poner para que me coja la los valores del bucle creo hmm esto es una rayada :( y sige sin salir jo
  #4 (permalink)  
Antiguo 25/05/2011, 11:00
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: Como puedo cojer los valores de tres tablas??

buenas, comprobaste si consulta te devolvio algun resultado,
mirando la consulta de te postie, desubri algunos errores en los nombres de los campos, los corregi :

SELECT Codigo_Menu, Codigo_Producto ,Unidades_Producto, Nombre_Producto, Nombre_menu ,Precio_Menu FROM (detalle_menu INNER JOIN producto on detalle_menu.Codigo_Producto=producto.Codigo_Produ cto) INNER JOIN menu on detalle_menu.Codigo_Menu = menu.Codigo_Menu WHERE detalle_menu.Codigo_Producto='026'

verifica bien si estos son los nombre de los campos estan bien, y trata de ejecutar esta consulta en phpmyadmin o desde la consola de mysql, para ver si te devuelve algo,

si puedes postea la estructura de las tablas

saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..

Etiquetas: tablas, tres
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 22:12.