
17/03/2010, 18:40
|
| | Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 21 años, 5 meses Puntos: 0 | |
Respuesta: Duda con consulta sql Tu segunda tabla es errónea, de hecho está mal estructurada, porque todos los valores para cada caso en tu primer tabla son 1, ya sea para experto, super experto, operativo, etc.
Si quieres usar un catálogo para saber si es experto, super experto, etc, la primera tabla quedaría así: Tabla: Padres
Dad_id Dad_nom Dad_tipo
1 Juan 2
2 Pedro 1
3 Diego 4 En la segunda tu catálogo como lo tienes: Tabla: Cat_Tipo
Dad_tipo Dad_tipo_desc
1 Experto
2 Super Experto
3 Operativo
4 Gestionador
5 Jefe Tu consulta quedaría así: Select a.dad_nom, (‘papá es un ‘ + b.dad_tipo_desc) as description
From Padres a, Cat_Tipo b
Where a.dad_tipo = b.dad_tipo Esto te imprimiría, según la información en las tablas de ejemplo: Juan / papá es un Super Experto
Pedro / papá es un Experto
Diego / papá es un Gestionador Así es como estructuraría yo las tablas de la BD.
El campo que tienes como dato_tip, no le veo caso, a menos de que sea un identificador para los casos en que se trate de una madre y no un padre. Si fuera así, también crearía un catálogo (tabla) llamado cat_dad_mom que contenga los campos dad_mom_id y dad_mom con los valores 0 y 1 para padre o madre respectivamente; esto para definir si se trata de una madre o un padre; y en la primera tabla (Padres) agregaría una columna llamada dad_mom que contenga los valores 0 o 1. Así ligaría esta tabla a la consulta para imprimir "papá" o "mamá" es un(a)... Ligando esta tabla, tu consulta quedaría así: Select a.dad_nom, (c.dad_mom + ‘ es un(a) ‘ + b.dad_tipo_desc) as description
From Padres a, Cat_Tipo b, cat_dad_mom c
Where a.dad_tipo = b.dad_tipo And a.dad_mom = c.dad_mom
Espero que esto te sirva y resuelva tu duda.
Saludos! |