|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre chevronné
![]() ![]() Rija RandrianoInscription : janvier 2007 Messages : 982 ![]() |
Bonjour,
En tant que développeur, je n'utilise que du LEFT JOIN (ou en plus long LEFT OUTER JOIN). Jamais du RIGHT OUTER JOIN, encore moins INNER JOIN qu'en cas de force majeure qui ne se présente pas beaucoup dans le monde professionnel. Pour la suite, je m'inspire des paroles de mes collègues: imaginez 2 tables Eleves et Notes, Eleves a 3 enregistrements: titi toto tata, toto n'a pas passé d'examen donc aucune instance dans Notes, INNER JOIN l'exclura du résultat alors qui dit qu'il ne doit pas être affiché en tant que note = zéro Le cas est plus grave pour les organismes d'attribution des pensions de retraite et de prévoyance sociale: imaginez qu'une personne n'est jamais considérée faute d'un champ non rempli .... Pour le cas du RIGHT JOIN, c'est juste une manière de penser, c'est l'équivalent du LEFT JOIN mais d'un point de vue inversé! Imaginez qu'il faut lister les restaurants ayant des plats de plus de 100€, est-ce que vous allez penser: j'image les plats de 100€ ayant pour restaurant ... Sincèrement, Rija Randriano
__________________
randriano.dvp.com |
|
|
015
|
|
|
#2 |
|
Membre expérimenté
![]() ![]() William RosenthalResponsable de service informatique Inscription : juin 2009 Messages : 400 ![]() |
Je constate qu'effectivement je ne code que du left join.
|
|
03
|
|
|
#3 | ||||
|
Membre chevronné
![]() Administrateur de base de données Inscription : août 2009 Messages : 404 ![]() |
LEFT JOIN et RIGHT JOIN c'est strictement la même chose....
Code :
Code :
Vous n'utilisez pas de jointures interne ? Si toutes les requêtes que vous devez exprimer ont se besoin.... pourquoi pas. Où est le débat ? Je suis non fumeur, je ne me sert pas du cendrier dans la voiture..... PS: Je trouve tout de même étonnant de ne jamais utiliser de jointure interne. C'est ce que j'utilise principalement, c'est indispensable lorsque la base de données est bien conçue. |
||||
|
|
40
|
|
|
#4 | ||
|
Membre confirmé
![]() Audie MallogiaInscription : juin 2005 Messages : 243 ![]() |
Citation:
Citation:
__________________
Mobile first ! Développeur & co-fondateur de App'it! - développement de solutions mobiles cross-platform |
||
|
20
|
|
|
#5 | |
|
Membre chevronné
![]() ![]() Rija RandrianoInscription : janvier 2007 Messages : 982 ![]() |
Citation:
En tant que développeur travaillant pour des projets clients, il vaut mieux tout garder (donc éviter le inner join) et faire le filtrage au niveau du code (C++, VB.NET, PHP) pour afficher ou pas les sans notes. C'est vrai au niveau performance et utilisation mémoire, INNER JOIN c'est plus léger mais je préfère utiliser LEFT JOIN car utiliser INNER peut causer une grave conséquence au niveau des données or les données sont importantes
__________________
randriano.dvp.com |
|
|
|
010
|
|
|
#6 | ||
|
Membre confirmé
![]() Audie MallogiaInscription : juin 2005 Messages : 243 ![]() |
Citation:
Moi ce que je te dis c'est que tu as un SGBD dont tu ne te sers que partiellement, c'est dommage, ça te fait écrire un code plus lourd pour rien ça surcharge le serveur pour rien mais bon après si ça ne gêne ni toi ni tes clients ni ton admin système pourquoi pas hein Citation:
Ce qui peut causer une grave conséquence au niveau de la perte des données c'est un mauvais code (SQL ou autre) ou un crash système mais certainement pas le INNER JOIN.
__________________
Mobile first ! Développeur & co-fondateur de App'it! - développement de solutions mobiles cross-platform |
||
|
50
|
|
|
#7 | |
|
Expert Confirmé
![]() Développeur informatique Inscription : août 2005 Messages : 1 457 ![]() |
Citation:
Le rôle des requêtes est de manipuler la BDD. Quand tu fais un SELECT c'est pour récupérer les données. Tu récupères les données, toutes les données, et rien que les données. Les cas où l'utilisation du INNER à la place d'un LEFT sont légions dans le monde professionnel. Je l'utilise tous les jours, comme j'utilise LEFT tous les jours. Ça dépend des cas. Bref, ton racisme (si tu me passes l'expression) des INNER je le trouve tout à fait irrationnel et je te mets les -1 que tu mérites
__________________
"Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste." Kenneth E. Boulding "/home/earth is 102% full ... please delete anyone you can." Inconnu |
|
|
|
30
|
|
|
#8 | |
|
Membre chevronné
![]() ![]() Rija RandrianoInscription : janvier 2007 Messages : 982 ![]() |
Citation:
C'est vrai LEFT JOIN est plus lent et bouffant de la mémoire que INNER JOIN mais on considère toute donnée importante sauf si c'est le client qui confirme qu'il veule du INNER, là c'est différent
__________________
randriano.dvp.com |
|
|
|
07
|
|
|
#9 | |
![]() ![]() Chef de projet NTIC Inscription : avril 2007 Messages : 1 782 ![]() |
Citation:
|
|
|
|
40
|
|
|
#10 |
|
Expert Confirmé
![]() Inscription : décembre 2007 Messages : 1 903 ![]() |
C'est juste une question de spécifications.
Si l'utilisateur veut tout, pourquoi pas des jointures externes? Si il ne veut que les clients disposant d'un compte parfaitement renseigné et d'une proposition commerciale existante, la jointure externe n'est d'aucune utilité, là ou la jointure interne, à l'ancienne, prend tout son sens. Il faut juste savoir ce que l'on veut. Et choisir son outil en fonction. |
|
|
30
|
|
|
#11 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
Si tu fait une jointure externe avec un COALESCE(Note, 0), si titi a eu 12, et que tata a eu 12 aussi, quand tu vas calculer la moyenne a l'exam, tu obtiendra... 8 ! Donc, pour ne pas pas vouloir "perdre des données" (que tu n'as de toute façon pas, soit dit en passant, puisque toto n'a pas passé l'examen), tu as faussé celles que tu avais ! Certes, il peut être nécessaire pour afficher les notes que toto ne soit pas "zappé", mais après cela dépend du besoin. Si la demande est : Citation:
|
||
|
|
20
|
|
|
#12 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
"Les cons, ça ose tout... C'est même à ça qu'on les reconnait !"
Michel Audiard " - le crétin chimiquement pur, vous le trouvez ou ? - chez developpez.net, je suis fidèle à mes fournisseurs !" Michel Audiard, adpation Fred Brouard... Bref, les mots me manque pour dire la stupidité des propos que l'on trouve dans certains forums... A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
51
|
|
|
#13 |
![]() ![]() |
Je suis d'accord avec SQLPro mais je vais le dire autrement.
Vous avez bien voulu apprendre C++, VB.NET, PHP, mais vous n'avez pas voulu apprendre le SQL ? C'est parce que c'est syntaxiquement cent fois plus simple que vous préférez au final coder n'importe comment ? Au final des gens comme vous ça donne du boulot, mais si votre client / employeur lisait ça - et en comprenait les aboutissants - il se passerait très vite de vos services.
__________________
Email : http://scr.im/waldar |
|
30
|
|
|
#14 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
Je vais rajouter une dernière citation d'Audiard...
"J'ai fait la guerre de 14-18, j'ai été militant communiste et maintenant je suis bistrotier... C'est dire si des conneries j'en ais entendu dans ma vie... Mais des comme ça, jamais !" A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
21
|
|
|
#15 |
|
Membre chevronné
![]() ![]() Rija RandrianoInscription : janvier 2007 Messages : 982 ![]() |
Merci à tous d'avoir prêté attention à ce débat car c'en est une
C'est un choix de développement de la boîte où je bosse! C'est vrai qu'on rencontrera un soucis avec des tables de plus de 100000 lignes, là c'est un cas de force majeure donc on utilise de l'INNER JOIN. JOIN est une opération d'algèbre relationnelle, nous voulons tous les éléments même ceux égal à zéro
__________________
randriano.dvp.com |
|
|
04
|
|
|
#16 | |||
![]() ![]() |
Soit le morceau de MCD suivant :
Salarie -1,1----Affecter----1,n- Service Il engendrera l'exemple de tables suivant : Service (svc_id, svc_nom) Salarie (slr_id, slr_id_service, slr_matricule, slr_nom, slr_prenom...) Tu es bien d'accord avec le fait que slr_id_service ne sera jamais NULL, conformément aux règles imposées par le MCD ? A quel service est affecté chaque employé ? Code :
Et des cas comme ça il y en a à la pelle ! Je dirais même que ma petite expérience personnelle me laisse à penser que les jointures externes sont moins fréquentes que les jointures internes. Alors quand je lis tes messages de cette file, et notamment cette dernière phrase : Citation:
![]() Il n'y a que très rarement des cas de force majeure ! Il y a des règles de gestion des données et des besoins exprimés. Si je veux la liste des véhicules et leur affectation, même ceux qui ne sont pas affectés, je fais une jointure externe. Si je veux la liste de tous les chauffeurs actifs et le véhicule qui leur est affecté, je fais une jointure interne. On t'a démontré plus haut que le fait de ramener toutes les lignes pouvait fausser un résultat (la moyenne de aieeeuuuuu). Si malgré tout ce qu'on t'a dit tu persistes dans la pensée exprimée par le titre de la file de discussion que tu as créée, c'est peut-être que tu entre dans une des catégories exprimées un peu sèchement mais avec humour par SQLPro !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
10
|
|
|
#17 | ||
|
Membre chevronné
![]() ![]() Rija RandrianoInscription : janvier 2007 Messages : 982 ![]() |
Citation:
Jointure externe moins fréquente!!!?? Citation:
__________________
randriano.dvp.com |
||
|
|
01
|
|
|
#18 | ||
![]() ![]() erwan Développeur Web Inscription : novembre 2003 Messages : 4 980 ![]() |
Citation:
Mais pour 1 jointure externe j'utilise au moins 10 jointures internes. Citation:
Je travaille sur des sites gouvernementaux avec des données Européennes , dans le genre institutions... Je rejoins les autres et rajoute que pour sortir des trucs comme ça faut avoir complétement foiré la modélisation de sa base
__________________
modérateur/rédacteur XML Je ne reponds pas aux questions par MP Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation
|
||
|
|
20
|
|
|
#19 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Spécialiste en bases de données Inscription : septembre 2006 Messages : 2 882 ![]() |
Citation:
Exact, c’est ce que confirme la référence The Relational Database Dictionary. Mais vous n’y trouverez rien sur la jointure externe qui est exclue de l’algèbre relationnelle.
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|
|
|
00
|
|
|
#20 |
|
Membre chevronné
![]() ![]() Rija RandrianoInscription : janvier 2007 Messages : 982 ![]() |
Wow, je subis la foudre des développeurs sur ce sujet, tout le monde vote contre mes messages! En effet, l'irritant de ce fil c'est sûrement mon expression: CAS DE FORCE MAJEURE???
C'est bien, j'adore car ça peut aider. Avoir foiré totalement la modélisation des données, je ne pense pas, je tiens à remarquer qu'avec des applications lourdes (pour machine: dotnet, c++, windev), on utilise essentiellement de la jointure interne car on y travaille avec une grande base de données.
__________________
randriano.dvp.com |
|
|
03
|
Copyright © 2000-2012 - www.developpez.com