problema con consulta SQL

leouz

Lanero Novato
26 Dic 2006
5
Buenas, quiero hacerles la siguiente consulta ya que no se mucho de sql y no logro solucionar el problema, el tema es el siguiente:

Tengo una tabla proyectos con los siguientes campos (entre otros), id, nombreProyecto, cliente y lider.

y otra tabla usuarios con los principales campos id, nombre y rol. Donde id es un autoincremento, nombre no hace falta aclarar que es y rol es Lider o Cliente (aun que los datos Lider y Cliente estan a su vez en otra tabla llamada rol y de ahi obtengo esos datos, pero ahora eso no importa).

Ahora bien, si yo ago esta consulta:

SELECT proyectos.id, nombreProyecto AS "Nombre de Proyecto", Cliente, Nombre AS "Lider" FROM proyectos, usuarios WHERE Lider = usuarios.id ORDER BY NombreProyecto

me devuelve por ejemplo:

id Nombre de Proyecto Cliente Lider

1 Proyecto1 1 pepe
2 Proyecto2 3 juan

y ahi esta mi problema, necesito que en la columna "Cliente" en vez que me devuelva el id del cliente, me muestre el nombre del Cliente al igual que lo hace con los Lideres.

Espero que alguien me pueda dar una solucion y desde ya les agradesco.

Leonardo
 
para empezar si utilizas dos tablas, para todos tus campos los debes de poner asi, tabla.nombre del campo, esto es para poder identificar mejor en tu consulta que quieres hacer.

Aparte no entiendo que tienes en el campo lider para hacer la igualdad con el id de la tabla usuarios
 
Envia todos los datos de las dos tablas y describeme bien que es lo que quieres mostrar y yo creo que te podria colaborar con este tema
 
Debes hacer un INNER JOIN entre las dos tablas, no se si tengas ese concepto claro, pero mas o menos es asi:
select campos from tabla1 inner join tabla2 on tabla1.camporelacionadocontabla2=tabla2.camporelacionadocontabla1

no se si asi me entiendes! en caso de no ser asi, enviame todos los campos de las dos tablas y generamos la sentencia SQL
 
debe hacer el join con la tabla cliente y traiga el nombre del cliente

SELECT proyectos.id, nombreProyecto AS "Nombre de Proyecto", NombreCliente, Nombre AS "Lider" FROM proyectos, usuarios,Clientes WHERE Lider = usuarios.id and Clientes.id=Usuarios.cliente
ORDER BY NombreProyecto

suponiendo que tiene una tabla cliente que tiene el id y el nombre cliente


y como dice mello si el motor lo permite utilice el inner join
 
mira deebes verificar que informacion tienes en el atributo cliente, quizas no le estes dando el atributo correcto para que te muestre el nombre en lugar de la id
 
leouz dijo:
Buenas, quiero hacerles la siguiente consulta ya que no se mucho de sql y no logro solucionar el problema, el tema es el siguiente:

Tengo una tabla proyectos con los siguientes campos (entre otros), id, nombreProyecto, cliente y lider.

y otra tabla usuarios con los principales campos id, nombre y rol. Donde id es un autoincremento, nombre no hace falta aclarar que es y rol es Lider o Cliente (aun que los datos Lider y Cliente estan a su vez en otra tabla llamada rol y de ahi obtengo esos datos, pero ahora eso no importa).

Ahora bien, si yo ago esta consulta:

SELECT proyectos.id, nombreProyecto AS "Nombre de Proyecto", Cliente, Nombre AS "Lider" FROM proyectos, usuarios WHERE Lider = usuarios.id ORDER BY NombreProyecto

me devuelve por ejemplo:

id Nombre de Proyecto Cliente Lider

1 Proyecto1 1 pepe
2 Proyecto2 3 juan

y ahi esta mi problema, necesito que en la columna "Cliente" en vez que me devuelva el id del cliente, me muestre el nombre del Cliente al igual que lo hace con los Lideres.

Espero que alguien me pueda dar una solucion y desde ya les agradesco.

Leonardo

Leonard olo primero que tiene que hacer ud es organizar los campos de las tablas por ejemplo: proy_ID, proy_Nom, proy_Lider.........etc...eso es para que los campos no se le confundan y procurar que no hayan campos iguales...........

id Nombre de Proyecto Cliente Lider

1 Proyecto1 1 pepe
2 Proyecto2 3 juan

le aparece asi porque ud le da al campo cliente el nombre de "Lider"........y lider es un campo de una tabla