Jointure SQL petite question - SQL/NoSQL - Programmation
Marsh Posté le 10-09-2010 à 09:13:42
Déjà, tu as quoi comme indexes?
Tu as utilisé une FK sur le champ id_table1?
Marsh Posté le 10-09-2010 à 09:16:09
Code :
|
Marsh Posté le 10-09-2010 à 10:39:03
Juste une observation:
Code :
|
Ne te retournera pas les infos de table1 qui n'ont pas d'ID dans table2.
Ca va te retourner le produit cartésien des 2 tables sans les enregistrement ou table1.id = table2.id_table1.
Donc pour chaque ligne de table1 il va te retourner toute la table2 - les lignes ou table1.id = table2.id_table1.
Si tu veux essayer par toi meme et voir la difference:
Code :
|
Code :
|
retourne 14 lignes.
Code :
|
retourne 2 lignes (table1.id 4 et 6).
Code :
|
retourne 84 lignes ((7 de table1 * 14 de table2) - 14 de table1.id = table2.id_table1).
Marsh Posté le 10-09-2010 à 10:57:56
Ah oui, tu as raison, je sais pas pourquoi je croyais que ca fonctionnait. Je viens de refaire le test et en effet ca affiche plein de fois la meme ligne.
Marsh Posté le 10-09-2010 à 08:59:59
Bonjour,
J'ai besoin d'un petit coup de mains pour une jointure sql.
J'ai 2 tables:
table1(id, nom)
table2(id, id_table1, champ)
J'ai besoin d'afficher les infos de la table 1 dont l'id n'est pas dans la table 2.
Voici la requete que j'utilise (et qui fonctionne) r.
SELECT * FROM table1, table2 WHERE table1.id != table2.id_table1
mais elle est super longue a exécuter car il y a pas mal de données.
Je ne connais que les bases de sql mais je sais qu'il existe les jointures qui permettent d'optimiser ce genre de requête: Outer join.
Pouvez-vous m'expliquer comment ca marche dans mon cas ?
Merci