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

Consulta SQL

Estas en el tema de Consulta SQL en el foro de Mysql en Foros del Web. hola tenemos un problema, queremos hacer un listado de las personas la cuales en la tabla estan guardadas como usuarios diferenciadas por el tipo (autor,guion,etc.). ...
  #1 (permalink)  
Antiguo 29/06/2011, 11:46
 
Fecha de Ingreso: junio-2011
Mensajes: 1
Antigüedad: 12 años, 10 meses
Puntos: 0
Pregunta Consulta SQL

hola tenemos un problema, queremos hacer un listado de las personas la cuales en la tabla estan guardadas como usuarios diferenciadas por el tipo (autor,guion,etc.).
Lo podemos listar con las cinco consultas siguientes:

function listado($con){
if($con){
$lis= mysql_query("SELECT pp.nom_pro, pp.fecha_pro, e.nom_edi, u.nom_usu
FROM productos_pagos AS pp, editoriales AS e, usuario AS u
WHERE pp.edi_pro=e.id_edi AND pp.color_pro=u.id_usu",$con);

$lis2= mysql_query("SELECT pp.nom_pro, u.nom_usu
FROM productos_pagos AS pp, usuario AS u
WHERE pp.autor_pro=u.id_usu",$con);

$lis3= mysql_query("SELECT pp.nom_pro, u.nom_usu, pp.descripcion_pro, pp.descarga_pro
FROM productos_pagos AS pp, usuario AS u
WHERE pp.lapiz_pro=u.id_usu",$con);

$lis4= mysql_query("SELECT pp.nom_pro, u.nom_usu
FROM productos_pagos AS pp, usuario AS u
WHERE pp.guion_pro=u.id_usu",$con);

$lis5= mysql_query("SELECT pp.nom_pro, u.nom_usu
FROM productos_pagos AS pp, usuario AS u
WHERE pp.tinta_pro=u.id_usu",$con);

echo "<table align='center' border ='1'>
<tr>
<td>Producto</td>
<td>Fecha de lanzamiento</td>
<td>Editorial</td>
<td>Autor</td>
<td>Guion</td>
<td>Tinta</td>
<td>Lapiz</td>
<td>Color</td>
<td>Descripcion</td>
<td>Descargas Realizadas</td>
</tr>";
while (($l=mysql_fetch_array($lis)) && ($l2=mysql_fetch_array($lis2)) && ($l3=mysql_fetch_array($lis3)) && ($l4=mysql_fetch_array($lis4)) && ($l5=mysql_fetch_array($lis5))){

echo "<tr>
<td>".$l['0']."</td>
<td>".$l['1']."</td>
<td>".$l['2']."</td>
<td>".$l2['1']."</td>
<td>".$l4['1']."</td>
<td>".$l5['1']."</td>
<td>".$l3['1']."</td>
<td>".$l['3']."</td>
<td>".$l3['2']."</td>
<td>".$l3['3']."</td>
<td>"."<a href=javascript:popUp('../ABM/editar_producto.php?id=".$lis['id_pro']."')><img src='../images/pencil.png' border='0' title='Modificar'></a>"."
"."<a href=javascript:popUp('../ABM/baja_producto.php?id=".$lis['id_pro']."')><img src='../images/eliminar.png' border='0' title='Eliminar'></a>"."</td>
</tr>";
}
mysql_free_result($lis);
mysql_free_result($lis2);
mysql_free_result($lis3);
mysql_free_result($lis4);
mysql_free_result($lis5);
}
}

El tema es que necesitamos que sea una sola consulta para poder usar un solo ID para edita o eliminar.
Las tablas que tenemos son las siguientes:


productos_pagos(id_pro,nom_pro,edi_pro,autor_pro,g uion_pro,color_pro,lapiz_pro,tinta_pro) 3 4

nom_pro= nombre producto
edi_pro= nombre de editorial(FK de id_edi)
autor_pro= es el autor participante(FK de id_usu)
guion_pro= es el guionista participante(FK de id_usu)
color_pro= es el colorista participante(FK de id_usu)
lapiz_pro= es el dibujante participante(FK de id_usu)
tinta_pro= es el colorista 2 participante(FK de id_usu)

editoriales(id_edi,nom_edi)

tipo(id_tip,tipo_tip)
1 Colorista
2 Dibujante

usuario(id_usu,tipo)
3 1
4 2
tipo= FK de id_tip


Esperamos haber sido claros.
saludos.
  #2 (permalink)  
Antiguo 01/07/2011, 06:06
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Consulta SQL

Busca los factores comunes para realizar una select con LEFT JOIN.
No puedo probarla porque no tengo las tablas pero inténtalo:
Código MySQL:
Ver original
  1. SELECT * FROM productos_pagos PP
  2.  #para obtener el color o lo que sea
  3.  LEFT JOIN usuario USs ON (PP.color_pro = USs.id_usu)
  4. #el producto
  5.  LEFT JOIN usuario US ON (PP.tinta_pro = US.id_usu)
  6.  LEFT JOIN editoriales ED ON (PP.edi_pro = ED.id_edi)
Salu2
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: sql
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:13.