SELECT *
FROM PERSONNE
WHERE PERSONNE.NO_PERSONNE = GENEALOGIE.NO_PERSONNE
AND GENEALOGIE.TYPE_EVENEMENT_GEN = 'Baptême'
AND GENEALOGIE.LIEU_EVENEMENT_GEN != 'Ste-Lubie'
AND GENEALOGIE.TYPE_EVENEMENT_GEN = 'Mariage'
AND GENEALOGIE.LIEU_EVENEMENT_GEN = 'Ste-Lubie';
我很想做那样的事。
选择这个人在Ste-Lubie结婚的地方,而不是Ste-Lubie的'Baptême'。
答案 0 :(得分:1)
请尝试这个解决方案:
SELECT *
FROM PERSONNE
JOIN GENEALOGIE ON PERSONNE.NO_PERSONNE = GENEALOGIE.NO_PERSONNE
LEFT JOIN GENEALOGIE GEN_NOT ON (PERSONNE.NO_PERSONNE = GENEALOGIE.NO_PERSONNE AND GENEALOGIE.TYPE_EVENEMENT_GEN = 'Baptême' AND GENEALOGIE.LIEU_EVENEMENT_GEN = 'Ste-Lubie')
WHERE
GENEALOGIE.TYPE_EVENEMENT_GEN = 'Mariage'
AND GENEALOGIE.LIEU_EVENEMENT_GEN = 'Ste-Lubie'
AND GEN_NOT.NO_PERSONNE IS NULL
一些修改,我认为应该工作......
答案 1 :(得分:1)
SELECT P.*
FROM PERSONNE P,GENEALOGIE G
WHERE P.NO_PERSONNE = G.NO_PERSONNE
AND G.TYPE_EVENEMENT_GEN = 'Mariage'
AND G.LIEU_EVENEMENT_GEN = 'Ste-Lubie'
AND NOT EXISTS
(SELECT 'X' FROM GENEALOGIE G1
WHERE P.NO_PERSONNE = G1.NO_PERSONNE
AND G1.TYPE_EVENEMENT_GEN = 'Baptême'
AND G1.LIEU_EVENEMENT_GEN = 'Ste-Lubie')
OR
SELECT P.*
FROM PERSONNE P
WHERE P.NO_PERSONNE IN
(SELECT NO_PERSONNE FROM GENEALOGIE G1
WHERE G1.TYPE_EVENEMENT_GEN = 'Mariage'
AND G1.LIEU_EVENEMENT_GEN = 'Ste-Lubie'
MINUS
SELECT NO_PERSONNE FROM GENEALOGIE G1
WHERE G1.TYPE_EVENEMENT_GEN = 'Baptême'
AND G1.LIEU_EVENEMENT_GEN = 'Ste-Lubie')
答案 2 :(得分:0)
试试这个......
SELECT T1.*,T2.*
FROM PERSONNE T1
INNER JOIN GENEALOGIE T2
ON T1.NO_PERSONNE = T2.NO_PERSONNE
WHERE T2.TYPE_EVENEMENT_GEN = 'Baptême'
AND T2.LIEU_EVENEMENT_GEN != 'Ste-Lubie'
AND T2.TYPE_EVENEMENT_GEN = 'Mariage'
AND T2.LIEU_EVENEMENT_GEN = 'Ste-Lubie';