En este grupo En todos

Grupo de Mysql



consulta: select anidados

Milton
Ing. sistemas esp. robotica e ia unive...
Escrito por Milton Guzmán Carabalí
el 26/02/2009 | Nivel Medio

Saludos, quiero saber si alguien me puede ayudar, la consulta es la siguiente: quiero saber si es posible hacer un conjunto de select anidados tal fuera sql, para no tener que hacer 2 consultas, lo intente de la siguiente manera, pero con el mysql_error me sale error de consulta, la instruccion es mas o menos asi (es php)
$cons_dat_emp=mysql_query("SELECT¨* FROM DATOS_EMPRESA WHERE ID_EMPRESA=(SELECT ID_EMPRESA FROM DATOS_USUARIO WHERE ID_USUARIO='$id_usuario'"),$var_conexion) or die ("error al generar la consulta : ". Mysql_error());

Lo que intento es: tengo el Id del usuario, en la tabla del usuario tambien almaceno el id de la empresa, y me quiero evitar extraer primero los datos del usuario y luego generar la consulta para extraer los datos de la empresa: osea, me quiero evitar esto:

//recuperar datos de usuario
$con_dat_usr=mysql_query("SELECT * FROM DATOS_USUARIO WHERE ID_USUARIO='$id_usuario',$var_conexion") or die ("error al generar la consulta : ". Mysql_error());
//extraer el registro
$reg_usr=mysql_fetch_array($con_dat_usr);
//extraer el id de empresa de la 2da posicion

$id_empresa=$reg_usr[1];
//generar la consulta :

$cons_dat_emp=mysql_query("SELECT * FROM DATOS_USUARIO WHERE ID_EMPRESA='$id_empresa'",$var_conexion) or die ("error al generar la consulta : ". Mysql_error());


Bueno, como pueden darse cuenta, es codigo redundante, pues podria hacer la consulta en una sola linea, si alguien me puede ayudar, lo agradeceria mucho, espero que este claro, cualquier error de sintaxis sepan disculpar, no pegue el codigo fuente, sino que lo escribi directamente en el bloc.
De antemano, muchas gracias por su ayuda

Indira Izquierdo Rodriguez
Ing. sistemas automatizados (informáti...
Escrito por Indira Izquierdo Rodriguez
el 05/03/2009 | Nivel Medio

1- Con una sola consulta ya obtienes el id de la empresa y los datos del usuario, seria

SELECT id_empresa, nombre, apellidos FROM datos_usuario WHERE id_usuario=$id_usuario

2- Ahora creo que lo correcto seria:

A-) Crear una tabla con los datos del usuario y otra con los datos de la empresa, y establecer una relacion entre ellos

B-) SELECT CONCAT(u. Nombre,' ',u. Apellidos) AS usuario, e. Empresa
FROM datos_usuario AS u
LEFT JOIN datos_empresa AS e ON e. Id=u. Id_empresa
WHERE u. Id_usuario=$id_usuario


Milton Guzmán Carabalí
Ing. sistemas esp. robotica e ia unive...
Escrito por Milton Guzmán Carabalí
el 23/03/2009 | Nivel Medio

Muchas gracias por tu sugerencia, muy buen aporte gracias

Milton Guzmán Carabalí
Ing. sistemas esp. robotica e ia unive...
Escrito por Milton Guzmán Carabalí
el 23/03/2009 | Nivel Medio

Excelenetes respuestas, gracias a todos por sus aportes son los mejores, suerte y felicitaciones por sus conocimientos