entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Ayuda con: Consulta SQL utilizando LEFT JOIN

Hola saludos
Tengo dos tablas: Persona y Usuario

CREATE TABLE PERSONA(
codigo VARCHAR(7) NOT NULL PRIMARY KEY,
cedula VARCHAR(20) NOT NULL UNIQUE,
nombre VARCHAR(30) NOT NULL,
apellido VARCHAR(40) NOT NULL,
telefono VARCHAR(20),
correo VARCHAR(40),
tipo_persona VARCHAR(15) NOT NULL,
CONSTRAINT ck_tipo_persona CHECK(tipo_persona IN('Catador', 'Administrador', 'Asociado', 'Particular')))

CREATE TABLE USUARIO(
codigo VARCHAR(7) PRIMARY KEY,
nombre_usuario VARCHAR(30) NOT NULL UNIQUE,
contrasenia VARCHAR(30) NOT NULL,
permiso VARCHAR(2) NOT NULL DEFAULT 'SI',
tipo_usuario VARCHAR(15) NOT NULL DEFAULT 'Usuario',
fk_codigo_persona VARCHAR(7) NOT NULL,
CONSTRAINT fk_codPersona1 FOREIGN KEY(fk_codigo_persona) REFERENCES PERSONA(codigo) ON DELETE CASCADE,
CONSTRAINT ck_codTipo_usuario1 CHECK(tipo_usuario IN('Usuario', 'Administrador')),
CONSTRAINT ck_permiso CHECK(permiso IN('SI','NO')))

Deseo realizar una consulta de todos en la tabla Persona cuyo tipo_persona sea "Catador" y a la vez en caso de que haya una referencia de alguno de éstos en la tabla Usuario entonces también visualizar algunos datos de la tabla Usuario, ahora bien utilizo ésta sentencia:

SELECT P.cedula 'Cedula',
       P.nombre 'Nombre',
       P.apellido 'Apellido',
       P.telefono 'Teléfono',
       P.correo 'Correo',
       U.nombre_usuario 'Usuario',
       U.permiso 'Permiso' 
FROM PERSONA P LEFT JOIN USUARIO U ON P.codigo = U.fk_codigo_persona 
AND P.tipo_persona='Catador' ORDER BY P.cedula

El problema es que ésta sentencia no efectúa la sentencia AND y por lo tanto me trae la información de todos las personas sin importar su tipo_persona.

¿Cómo puedo hacer que la sentencia me devuelva filas de resultado cuando el tipo_persona sea sólo "Catador"?

1 Respuesta

2votos

Dr oscar Puntos3250

Rabia olvidado que se podía mezclar con WHERE JAJA

SELECT P.cedula 'Cedula',
       P.nombre 'Nombre',
       P.apellido 'Apellido',
       P.telefono 'Teléfono',
       P.correo 'Correo',
       U.nombre_usuario 'Usuario',
       U.permiso 'Permiso' 
FROM PERSONA P LEFT JOIN USUARIO U ON P.codigo = U.fk_codigo_persona 
WHERE P.tipo_persona='Catador' ORDER BY P.cedula

0voto

Peter comentado

Gracias por compartir la solución :)

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta