es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

SELECT nombre_doctor FROM doctores WHERE id_doctor IN ( SELECT id_doctor FROM pacientes WHERE edad_paciente < 30 GROUP BY id_doctor HAVING COUNT(*) = ( SELECT COUNT(*) FROM pacientes WHERE id_doctor = doctores.id_doctor ) )

Tengo 3 tablas: Doctor, Paciente, DoctorPaciente. Doctor tiene los campos ID, nombre, teléfono. Paciente tiene los campos ID, nombre, teléfono, edad, sexo. DoctorPaciente contiene los campos DoctorID y PacienId, esa es la conexión entre las tablas Doctor y Paciente. ¿Cómo puedo encontrar doctores que tengan todos los pacientes con una edad menor a 30 años?

Hay relaciones entre las tablas.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para encontrar médicos que tengan todos los pacientes con una edad menor a 30, podemos utilizar la siguiente consulta SQL:

    SELECT d.ID, d.name, d.phone
    FROM Doctor d
    WHERE NOT EXISTS (
        SELECT *
        FROM Patient p
        LEFT JOIN DoctorPatient dp ON p.ID = dp.PatientId
        WHERE dp.DoctorId = d.ID
            AND p.age >= 30
    )
    

    Esta consulta utiliza una subconsulta para verificar si hay algún paciente mayor de 30 años asociado con un médico en particular. Si no hay tales pacientes, entonces la información del médico se incluye en el conjunto de resultados.

    El LEFT JOIN asegura que incluimos todos los pacientes, incluso aquellos que no están asociados con un médico en la tabla DoctorPatient. La cláusula WHERE filtra cualquier paciente mayor de 30 años, y la cláusula NOT EXISTS verifica si hay tales pacientes asociados con el médico considerado.

    Esta consulta debería devolver una lista de médicos que solo tienen pacientes con una edad menor a 30.

Comments are closed.