Code : Tout sélectionner
SELECT t1.salle_id, t1.patient_id
FROM table1 AS t1
LEFT OUTER JOIN table2 AS t2 ON t1.salle_id = t2.salle_id AND t1.patient_id = t2.patient_id
WHERE t1.salle_id IS NULL
AND t1.patient_id IS NULL;
Faisons simple d'abord avec une seule clé :j'ai deux table ( avec 2clés Salle_id, Patient_ID dans chaque table) , comment faire pour creer une requette sql que retourne seulement les enregisterment de la table 1 et que ne sont pas dans la table 2
Code : Tout sélectionner
select id from table1 ...
Code : Tout sélectionner
select * from table2 where id not in (select id from table1 ...)
Code : Tout sélectionner
select * from table2 where (id1*1000000000+id2) not in (select id1*1000000000+id2 from table1 ...)
Code : Tout sélectionner
CREATE TABLE `tests`.`table1` (
`cle1` TINYINT( 2 ) UNSIGNED NOT NULL ,
`cle2` TINYINT( 2 ) UNSIGNED NOT NULL ,
`libelle` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `cle1` , `cle2` )
) ENGINE = InnoDB
CREATE TABLE `tests`.`table2` (
`cle1` TINYINT( 2 ) UNSIGNED NOT NULL ,
`cle2` TINYINT( 2 ) UNSIGNED NOT NULL ,
`libelle` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `cle1` , `cle2` )
) ENGINE = InnoDB
INSERT INTO table1 (cle1, cle2, libelle) VALUES (1, 1, 'enregistrement 1 - présent dans les 2 tables');
INSERT INTO table1 (cle1, cle2, libelle) VALUES (2, 2, 'enregistrement 2 - présent dans les 2 tables');
INSERT INTO table1 (cle1, cle2, libelle) VALUES (3, 3, 'enregistrement 3 - présent dans les 2 tables');
INSERT INTO table1 (cle1, cle2, libelle) VALUES (4, 4, 'enregistrement 4 - présent dans table 1 uniquement');
INSERT INTO table1 (cle1, cle2, libelle) VALUES (5, 5, 'enregistrement 5 - présent dans table 1 uniquement');
INSERT INTO table1 (cle1, cle2, libelle) VALUES (6, 6, 'enregistrement 6 - présent dans les 2 tables');
INSERT INTO table2 (cle1, cle2, libelle) VALUES (1, 1, 'enregistrement 1 - présent dans les 2 tables');
INSERT INTO table2 (cle1, cle2, libelle) VALUES (2, 2, 'enregistrement 2 - présent dans les 2 tables');
INSERT INTO table2 (cle1, cle2, libelle) VALUES (3, 3, 'enregistrement 3 - présent dans les 2 tables');
INSERT INTO table2 (cle1, cle2, libelle) VALUES (6, 6, 'enregistrement 6 - présent dans les 2 tables');
Code : Tout sélectionner
SELECT t1.cle1, t1.cle2, t2.cle1, t2.cle2, t1.libelle
FROM table1 AS t1
LEFT OUTER JOIN table2 AS t2 ON t1.cle1 = t2.cle1
AND t1.cle2 = t2.cle2
Code : Tout sélectionner
cle1 cle2 cle1 cle2 libelle
1 1 1 1 enregistrement 1 - présent dans les 2 tables
2 2 2 2 enregistrement 2 - présent dans les 2 tables
3 3 3 3 enregistrement 3 - présent dans les 2 tables
4 4 NULL NULL enregistrement 4 - présent dans table 1 uniquement
5 5 NULL NULL enregistrement 5 - présent dans table 1 uniquement
6 6 6 6 enregistrement 6 - présent dans les 2 tables
Code : Tout sélectionner
SELECT t1.cle1, t1.cle2, t2.cle1, t2.cle2, t1.libelle
FROM table1 AS t1
LEFT OUTER JOIN table2 AS t2 ON t1.cle1 = t2.cle1
AND t1.cle2 = t2.cle2
WHERE t2.cle1 IS NULL
AND t2.cle2 IS NULL
Code : Tout sélectionner
cle1 cle2 cle1 cle2 libelle
4 4 NULL NULL enregistrement 4 - présent dans table 1 uniquement
5 5 NULL NULL enregistrement 5 - présent dans table 1 uniquement
Je ne sais pas.C'est pas un peu tarabiscotée comme solution ?