SQL - dédoublonnage - SQL/NoSQL - Programmation
Marsh Posté le 30-09-2005 à 14:50:27
Beh oui : JOIN ... ON ... JOIN ... ON .. JOIN ... ON ...
Enfin, selon le DBMS.
Marsh Posté le 07-10-2005 à 00:42:26
perso, je préfère la syntaxe qui passe partout et que je trouve plus lisible :
select ...
from table1, table2, ..., tablen
where table1.fk = table2.pk
and table2.fk = tableX.pk
...
and tableY.fk = tablen.pk
Marsh Posté le 18-10-2005 à 14:31:08
Salut,
Merci bcp pour ces conseils. Par contre, cette requette me sort les enregistrements communs à toutes les tables. Or je souhaiterai les enregistrements inverses : les valeurs qui ne sont pas communes aux tables.
Please help me ;-)
Marsh Posté le 18-10-2005 à 16:02:27
voici :
select *
from table1
where table1.col1 NOT IN (select col1 FROM table2)
etc etc si tu veux le faire sur plusieurs tables...
Marsh Posté le 18-10-2005 à 16:13:13
fait des left join et une série de OR portant sur chaque élément des jointures avec "is null"
genre, dans ton exemple du dessus :
([E-mail_clubistes].[E-mail] is null or [Jeux magny cours].[E-mail] is null)
Marsh Posté le 18-10-2005 à 17:54:29
yes, ca marche, sauf que je n'ai que les enregistrements de la première table et qui ne sont pas dans la deuxième. Il me manque les enregistrements de la seconde table qui ne sont pas dans la première.
T'as une idée ?
Marsh Posté le 18-10-2005 à 19:27:26
ok, alors essaie ça :
Code :
|
=> Si le "RIGHT OUTER JOIN" marche pas, interverti les deux tables et utilise "LEFT JOIN".
Si MySQL supporte le FULL JOIN ou FULL OUTER JOIN (PostGre le supporte, mais c'est plutôt rare) alors tu peux aussi faire :
Code :
|
L'intérêt d'un FULL OUTER JOIN, c'est que si t'as 25 tables, tu fais tes 25 jointures et t'as pas besoin de faire 25 union
Sinon, si c'est une version de MySQL récente, tu peux aussi faire :
Code :
|
Marsh Posté le 18-10-2005 à 19:28:02
Comme tu peux voir, y'a toujours 25 solutions pour arriver au bon résultat, ensuite reste à savoir quelle solution offre le meilleur compromis support/rapidité
Marsh Posté le 30-09-2005 à 14:18:07
Salut à tous,
Ci joint un code qui permet de sortir tous les champs de deux tables, qui ont la valeur email égales (code de access, d'où le sql un peu douteux)
SELECT [E-mail_clubistes].[E-mail], [E-mail_clubistes].[Code postal]
FROM [E-mail_clubistes] INNER JOIN [Jeux magny cours] ON [E-mail_clubistes].[E-mail] = [Jeux magny cours].[E-mail];
Ca marche nickel mais voici ma question : peut on le faire sur 3 ou 4 tables en même temps ? Et si oui, comment ?
Merci bcp