Il est tout à fait possible de créer une jointure entre des tables en utilisant une clause where. En fait, c'est souvent ce que je fais car je trouve que cela conduit à des informations plus claires sur ce que vous faites réellement, et si vous n'obtenez pas les résultats que vous attendez, vous pouvez déboguer petit à petit.
Cela dit, une jointure est certainement beaucoup plus rapide à écrire! S'il vous plaît gardez à l'esprit que je suis un rouillé sur SQL donc j'ai peut-être manqué oublié, et je ne vais pas inclure de code car vous n'avez pas dit quel SGBD vous utilisez car ils ont tous légèrement différent code. La chose à retenir est que la jointure fonctionne sur une colonne avec les mêmes données (et type) en son sein.
Il est beaucoup plus facile si chaque table a le champ « se joindre » porte le même nom, alors il devrait être une question de
join on <nameOfField>
Toutefois, si vous souhaitez utiliser le champ qui ont des noms différents dans les différentes tables vous aurez besoin de lister les noms complets. ie tableName.FieldName
Si vous avez des problèmes avec le naturel, intérieur et extérieur, gauche et droite, vous devez penser à un diagramme de Venn avec le naturel étant le point de communité entre les tables. Si vous n'utilisez que 2 tables intérieures et extérieures sont équivalentes à gauche et à droite (chaque tableau étant un seul cercle dans le diagramme de Venn) et gauche et droite étant l'ordre des tables dans votre liste dans la partie principale de votre sélection (la première étant la gauche et la seconde étant la droite). Lorsque vous ajoutez un troisième tableau, vous pouvez sélectionner l'une des sections croisées en utilisant ces mots-clés. Encore une fois cependant, j'ai toujours trouvé plus facile de faire une sélection primaire et de créer une table temporaire, puis d'effectuer ma prochaine jointure en utilisant cette table temporaire (donc seulement besoin d'utiliser naturel ou gauche et droite). Encore une fois, je trouve cela plus facile à déboguer.
La meilleure chose est d'expérimenter et de voir ce que vous obtenez en retour. Sans un diagramme de vos tableaux, c'est le meilleur que je puisse vous offrir.
en bref ...
sélectionne imbriquées où le champ = (sélectionner de la table où le champ =)
et tables temporaires
sont (je pense) plus facile à déboguer ... mais ne prends plus d'écriture!
David.
mettre la structure de la table pour référence .. sans elle, comment peut-on vous suggérer quelque chose? –
http://www.whathaveyoutried.com – pduersteler
J'ai essayé un certain nombre de choses, en utilisant principalement 'Join' mais mes connaissances sur ce sujet sont limitées. Et il semble qu'ils ont tous besoin de données connexes, mais aucune de ces données n'a de relation quelconque. – scottevans93