Сделайте запрос mysql, чтобы найти всех людей из некоторой таблицы


Допустим, у меня есть таблица Person и у меня есть другая 3 Doctor, Policeman, Lawyer.... эти 3 таблицы имеют idPerson, из которых они берут общие атрибуты, такие как имя фамилия и т. д.... Если я хочу найти всех людей, которые являются врачами или юристами, с их общей информацией из таблицы Person, Как я могу это сделать?

Я попробовал что-то вроде этого (играл, ставя все комбинации правое соединение, левое соединение, внутреннее соединение)

SELECT Person.* 
FROM Person 
RIGHT JOIN doctor ON doctor.idPerson = person.idPerson 
LEFT JOIN lawyer ON lawyer.idPerson = person.idPerson
3   2   2012-05-15 23:40:01

3 ответа:

Вместо того, чтобы использовать соединения, вы можете найти его проще использовать EXISTS:

SELECT col1, col2, ... coln
FROM Person
WHERE EXISTS (
    SELECT * FROM Doctor WHERE Doctor.idPerson = Person.idPerson
) OR EXISTS (
    SELECT * FROM Lawyer WHERE Lawyer.idPerson = Person.idPerson
) 
SELECT Person.* FROM Person 
left outer JOIN doctor ON doctor.idPerson = person.idPerson 
LEFT outer JOIN lawyer ON lawyer.idPerson = person.idPerson
where doctor.personid is not null
or laywer.personid is not null

Попробуйте это

SELECT Person.* 
FROM Person 
LEFT JOIN doctor ON doctor.idPerson = person.idPerson 
LEFT JOIN lawyer ON lawyer.idPerson = person.idPerson
WHERE lawyer.idPerson IS NOT NULL 
OR doctor.idPerson IS NOT NULL