|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre confirmé
![]() Inscription : mai 2004 Messages : 536 ![]() |
Bonjour à tous,
Je risque de passer pour une jambe de bois, mais là, j'ai fait la découverte du siècle ![]() Tout ça pour dire que j'en ai appris une bonne... Mon problème était que je devais supprimer des références employé dans de multiples tables. Malheureusement pour moi, en fait, heureusement, le delete cascade ne fonctionnait pas. En plus, le modèle de données est tellement complexe, ou pourri, c'est selon, qu'il m'était impossible de faire un alter table (...) on delete cascade. Il a donc fallu se la faire à l'ancienne et supprimer tous les enfants avant du supprimer les parents ![]() Voilà la perle que j'ai trouvé, en fouillant sur le net, bien évidemment. Le problème énoncé (simplifié) : Je cherche à supprimer tous les enfants des parents qui ne sont plus employé. Code :
Ça faisait longtemps que j'avais pas été excité comme un jouvenceau
__________________
Sun Certified Java Programmer, SE 6 et Sun Certified Web Component Developer, J2EE 5 |
||
|
|
00
|
|
|
#2 | ||
|
Membre confirmé
![]() Inscription : mai 2004 Messages : 536 ![]() |
reBIM!!!
![]() Code :
__________________
Sun Certified Java Programmer, SE 6 et Sun Certified Web Component Developer, J2EE 5 |
||
|
|
00
|
|
|
#3 |
![]() ![]() |
Et sinon, vous avez une question ?
__________________
Email : http://scr.im/waldar |
|
10
|
|
|
#4 |
|
Membre confirmé
![]() Inscription : mai 2004 Messages : 536 ![]() |
Pour l'instant pas. Mais comme il m'a été difficile de trouver cette information je la partage, je me dis qu'elle pourrait être utile à quelqu'un d'autre. Mais sans doute as-tu raison, j'aurai dû le mettre dans la FAQ
__________________
Sun Certified Java Programmer, SE 6 et Sun Certified Web Component Developer, J2EE 5 |
|
|
00
|
|
|
#5 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
Il est assez navrant de constater que cette requête simplissime soit supposé être le miracle du jour !
Preuve que les développeurs régressent à un point que je n'aurais jamais imaginé il y a dix ans.... Bref, messieurs, commencer par apprendre le langage SQL avec un vrai cours, en vous aidant d'une BON site web et d'un BON bouquin et non en lisant tout un tas de blog ou de livres à la con, comme SQL Tête la première ! On est en pleine régression... 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 * * * * * |
|
01
|
|
|
#6 | |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Citation:
|
|
|
|
00
|
|
|
#7 | ||
|
Membre confirmé
![]() Inscription : mai 2004 Messages : 536 ![]() |
ALERTE au TROLL !!!!!
Citation:
Ton message je le prends comme une attaque partiellement personnel. On va déjà remettre le contexte en place. Voilà les technologies que je pratique dans le cadre de mon travail html, css, javascript(avec du ajax), xml (schema et DTD), php, java, c#, vb.net , asp.net, SQL et dernièrement dev mobile. Malheureusement pour moi je fais de la maintenance logiciel (que de la correction de bugs... et mise aux normes w3c pour le web) donc j'ai pas de gros projet où je peux me perfectionner. Maintenir à jour toutes ces connaissances demande trop temps, temps que je n'ai pas puisque en plus j'étudie en cours du soir... En gros, je fais tout mais ne maitrise rien... la faute à qui ? A moi ? Je ne t'ai pas dit, mais j'ai un peu moins de 2 ans d'expérience et durant ces 2 ans je n'ai eu aucun teaching (je suis le seul développeur dans la boite ainsi que dans mon expérience passée) et personne pour m'inculquer les bonnes pratiques, d'ailleurs c'était plutôt le contraire, on me désapprenait. La faute à qui ? A moi, toujours ? Tu es informaticien et tu connais la réalité du marché. Quand tu trouves un boulot en tant que junior tu dois être le king de la planète et tout connaitre et être à 100% opérationnel... Le partage des connaissances se perd dans notre milieu. La question que je te pose est la suivante : Est-ce qu'il y a 10 ans un développeur devait pratiquer autant de technos en même temps ? Pour ta deuxième allégation. Je suis auditeur au CNAM et détenteur d'un CP TDAI, je suis à une UE du CP Webmestre et à 20 crédits de la licence. Je suis certifier Java et j'aimerais me certifier .NET et PHP et Oracle. Tout ça pour monter en compétence. Les profs que j'ai eu en base de données, il y a eu Daniel Beauchêne qui enseigne aussi à l'IUP d'annecy, excellent prof. Puis Christophe Marty vraiment excellent prof et un support de cours impeccable et enfin Joëlle DELACROIX-GOUIN excellent prof aussi, mais le cours ne parlait pas que des BD, puisque ce n'était pas le sujet principal du cours. Le problème de ces cours, c'est qu'ils sont très porté sur la modélisation de BD et les requêtes de type DML mais en SELECT. Il y a beaucoup d'exercices de ce type (select) et beaucoup moins pour tout ce qui touche au DDL et update et delete. D'ailleurs à mon boulot je fais plus de requête de type SELECT que de DELETE ou UPDATE qui elles sont définies au début et ensuite on y touche que très rarement. Ce qui explique que je sois moins à mon aise avec ce type de requête. Tu peux te targuer d'être un spécialiste en base de données mais je suis sûr que le 70% de ton temps, au minimum, tu ne fais que ça, avec en plus une dizaine d'années d'expérience. Donc tu n'as aucun mérite. As-tu oublié que toi aussi tu es passé par-là ? Il faut apprendre à modérer ton égo ! Je serai très heureux que tu m'envoies ton cours pour que je puisse lire son contenu et te saquer s'il manque quelque chose... A propos des bons sites web et bouquins dont tu parles. J'ai en permanence un onglet d'ouvert sur sql et le 99% de mon temps je trouve ce que je recherche, c'est souvent pour me rafraichir la mémoire sur tel ou tel point. Mais j'en conclu que c'est un site à la con puisque l'information que je cherchais n'y était pas ?... Delete avec sous requête, merci de rajouter un exemple 17.2 avec le bout de code que j'ai mis car tu n'en traites pas. Et merci aussi de me remercier pour t'avoir montré une lacune dans tes exemples. Ton exemple supprime le/les tuple/s satisfaisant à la sous-requête qui ne renvoie qu'un résultat, alors que moi je cherchais à supprimer le/les tuple/s satisfaisant à la sous-requête qui renvoie plusieurs résultats. D'ailleurs avant j'avais testé ta requête et j'avais eu le message suivant : Citation:
Les uniques livres que je possède traitant des bases de données : Conception et architecture des bases de données, Bases de données écrit par Gardarin, et et et... SQL 1er édition par Frédéric Brouard Est-ce aussi des livres à la con ? Alors oui, c'est vrai, je ne les ai pas lu en entier, je m'en sers comme référence lorsque je recherche un élément en particulier. Et malheureusement, encore une fois, comme je ne fais pas du SQL toute la journée, j'ai tendance à oublier. C'est très volontiers que j'accepte une place dans ta société si tu me coatch. Il est claire que pour les mammouths des bases de données dans ton genre cette syntaxe t'est familière, mais moi, je ne l'avais jamais vue et c'est pour ça que je l'ai posté, pour un partage de connaissance, sûrement pas à la hauteur du tien, mais un partage tout de même... Peut-être même que dans ton livre elle n'y est pas, je vais vérifier. Tu peux être sûr que t'auras droit à un commentaire à la hauteur du tien, sois-en sûr ! ![]() Ça serait pas mal de t'excuser aussi, d'éviter une poussée fulgurante d'égo de pré-grincheux-blasé-pédant et de m'envoyer un pdf de ton dernier livre car j'ai plus trop envie de l'acheter maintenant ![]() J'espère que tu ne traites pas comme ça tes élèves, parce que de pas savoir ou de plus savoir c'est pas un crime, surtout quand on cherche à apprendre A+
__________________
Sun Certified Java Programmer, SE 6 et Sun Certified Web Component Developer, J2EE 5 |
||
|
|
00
|
|
|
#8 | ||||
|
Membre chevronné
![]() Administrateur de base de données Inscription : août 2009 Messages : 404 ![]() |
Citation:
Elle permet de contourner l'impossibilité de réaliser certaines sous-requêtes dans les opérations DML. Doc MySQL : Citation:
Update avec sous requête MySQL |
||||
|
|
20
|
|
|
#9 | ||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Citation:
Sur le fond, SQLpro a raison de dire que ça n'est pas la découverte du siècle ; plus largement, ça me semble normal qu'un enseignant encourage les étudiants à ne pas se satisfaire de trucs de base et à creuser plus loin. Enfin, la syntaxe que tu as citée est propre à MySQL, d'où le fait que tu ne l'ai pas trouvé sur le site ou dans les bouquins de SQLpro, qui traitent du SQL standard. Citation:
Stimuler les étudiants n'est pas un crime non plus |
||
|
|
01
|
|
|
#10 | |
|
Membre confirmé
![]() Inscription : mai 2004 Messages : 536 ![]() |
Citation:
Attends, je vais me pousser de 22 ans pour être ton aîné... Mon petit, cette requête a été pondue sur SQL Server. Merci de revoir tes non-standards... Ha ces jeunes d'aujourd'hui ils sont mal éduqués
__________________
Sun Certified Java Programmer, SE 6 et Sun Certified Web Component Developer, J2EE 5 |
|
|
|
00
|
|
|
#11 |
|
Membre confirmé
![]() Inscription : mai 2004 Messages : 536 ![]() |
Merci pour tes liens Oishiiii, je vais regarder de plus près.
__________________
Sun Certified Java Programmer, SE 6 et Sun Certified Web Component Developer, J2EE 5 |
|
|
00
|
|
|
#12 | |||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Citation:
Citation:
Citation:
Ceci dit, oui, c'est naturel de faire une jointure ou une sous-requête IN dans ces cas-là, ou du moins ça devrait l'être. Il n'y a aucune honte à ne pas connaître ça quand on est en train d'apprendre, mais venir claironner que tu as découvert l'eau tiède et que c'est la révolution n'est quand même pas très glorieux |
|||
|
|
00
|
|
|
#13 |
|
Membre éprouvé
![]() Inscription : avril 2008 Messages : 554 ![]() |
Hello tout le monde!
Ben dis donc, moi qui voulait me mettre à SQL, (jamais vu, et autodidacte) vous me faites peur ![]()
|
|
|
00
|
|
|
#14 |
|
Membre expérimenté
![]() Inscription : octobre 2002 Messages : 654 ![]() |
Bonjour,
Je suis d'accord avec LhIaScZkTer que la remarque de SQL pro était injurieuse, comme souvent d'ailleurs. Je passe mon temps sur son site, je respecte ses connaissances, mais il ne se prend pas "pour une queue de figue" et il nous prend souvent pour de la m.. en nous insultant. Ce qui m'a toujours étonné est qu'il soit modérateur, ces remarques ne sont jamais modérées et je suis quasi sure qu'il en est fier. Se faire insulter, ou traiter d'ignare quand on ne connait pas quelque chose est blessant et ne pousse pas à persévérer. En revanche techniquement je dis chapeau, je m'incline, je ne lui arrive pas à la cheville pour le SQL. Cordialement Soazig |
|
|
10
|
|
|
#15 |
|
Membre confirmé
![]() Inscription : mai 2004 Messages : 536 ![]() |
Salut zouzoukha, j'espère que ça t'en empêchera pas, car c'est vraiment sympas les bases de données. En plus les tutos de SQLpro sont vraiment bien, mais attention à ne poser des questions/remarques débiles sinon
, comme j'en ai fait les frais ![]() Antoun, pour en conclure avec cette discussion qui ne fait pas avancer le smilblick, quoique à grand coup de flagélation j'ai toute de même appris que la requête n'était pas standard. Je reconnais que le titre du thread était mal choisi, mais j'étais juste content d'avoir trouvé une solution à un problème très urgent. En fait, j'étais content d'avoir trouvé quelqu'un qui l'avait trouvé avant moi... Ce qu'il a dit de terrible ? C'est que c'était simplement hors propos. Qu'il fasse ce constat ok, il aurait même pu émettre toutes les critiques qu'il voulait à condition de prendre la peine de dire que ce que j'avais trouvé (en fouillant le web) n'était pas standard, donc que c'était une fausse bonne solution. Pour ta deuxième remarque je te laisse lire la réponse que j'ai donné à waldar. Mais grâce aux commentaires qui on été fait, je me rends compte que cette requête n'a pas sa place dans la FAQ, ou si elle y est insérée, de mettre un warning disant que la requête n'est pas standard. Vu que ça fonctionne avec SQL server et MySQL (j'ai pas testé), il serait intéressant de voir ce que ça donne sous Postgres, oracle et autres... Je l'aurais volontiers fait ce soir, mais demain j'ai un exa et je dois bosser. Sinon, merci pour ta remarque constructive concernant le IN.
__________________
Sun Certified Java Programmer, SE 6 et Sun Certified Web Component Developer, J2EE 5 |
|
|
00
|
|
|
#16 | ||||||||||||||||||||||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 950 ![]() |
Remarque générale : j'en ais marre de faire des cours en ligne et des bouquins qui ne sont pas lus et provoque des questions ou des réactions qui me paraissent honteuses tant elle sont du domaine du basique !!!!
1) cette syntaxe est en effet propre à SQL Server 2) la syntaxe normative pour utiliser une sous requête se base sur le ROW VALUE CONSTRUCTOR, hélas rarement implémenté... Si vous aviez lu mon livre (synthex), voici ce que vous y auriez trouvé : * * * 6.5 suppression de ligne avec DELETE La suppression des lignes d'une table, par l'intermédiaire d'une spécification de table ou de vue répond à la syntaxe suivante : Code :
• si la table visée est un type table le mot clef ONLY spécifie que seule la table visée est impactée. Dans le cas contraire, toutes les tables héritées sont impactées; • l'omission de la clause WHERE supprime toutes les lignes de la table. 6.5.1 suppressions directes Voici quelques exemple de l'utilisation de l'ordre SQL DELETE : Code :
Code :
Code :
Cette requête supprime toutes les lignes. 6.5.2 suppressions utilisant une sous requête Voici quelques exemple de l'utilisation de l'ordre SQL DELETE combiné à une sous requête simple : Code :
Code :
Code :
Voici quelques exemple de l'utilisation de l'ordre SQL DELETE combiné à une sous requête corrélée : Code :
Code :
* * * Deux de ces exemples montre l'utilisation du RVC dans le cas de DELETE avec sous requête... Pour SQL Server, il suffit d'aller dans l'aide en ligne sur le DELETE pour trouver la réponse. L'aide en ligne est très bien faite et en plus en français.... Ainsi à la page ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.fr/s10de_1devconc/html/8d339936-b2fe-4be3-891a-87088d825fe9.htm (SQL Server 2008), on trouve l'exemple suivant : # # # L'exemple suivant montre l'extension Transact-SQL utilisée pour supprimer des enregistrements d'une table de base en fonction d'une jointure ou d'une sous-requête corrélée. La première instruction DELETE montre une sous-requête compatible ISO tandis que la seconde instruction DELETE montre l'extension Transact-SQL. Les deux requêtes suppriment des lignes de la table SalesPersonQuotaHistory, en se basant sur les titres stockés dans la table SalesPerson. Code :
Code :
C'est clair net et précis ! Bref, je ne peut pas m'empêcher que vous avez perdu beaucoup de temps pour pas grand chose... Malheureusement ce que je constate tous les jours, c'est que les étudiants sont de moins en moins bien formés aux SGBDR. Et l'enseignant que je suis, milite depuis 10 ans pour plus d'espace pour les SGBDR dans les cours... Mais dans les faits c'est de moins en moins le cas. ENFIN Mes attaques ne sont jamais personnelles. Comme je ne vous connais pas personnellement, cela n'aurait pas de sens de vous qualifier de quoi que ce soit, en plus d'être sans doute diffamatoire. Chaque fois que j'ai traité d'idiot ou d'imbécile, ce qui est vrai, ce sont pour qualifier vos propos. Relisez bien ce que j'ai posté. Que vous les ayez pris pour argent comptant, me laisse à penser que vous n'êtes pas si intelligent que ça au fond !!! ![]() Modérateur ?Oui, c'est vrai je le suis. En fait c'est parce que j'ai créé il y a plus de 10 ans le forum sur lequel vous êtes... Mais sachez que je ne modère jamais, sauf si les propos sont injurieux ou diffamatoire. Dire que quelqu'un est con est diffamatoire si on ne peut pas prouver ses dires. Or par Internet nous ne nous connaissons pas, donc c'est la plupart du temps diffamatoire... Là je modère (et c'est très exceptionnel, peut être 2 fois en 10 ans). TERMINATOR La raison pour laquelle mes propos ont la dent dure est très simple. 1) je suis un vieux con (si, si à plus de 50 ans, je peut me permettre de l'affirmer) 2) j'ai remarqué depuis bien longtemps que l'on était plus écouté et que l'on suscitait plus de débats lorsque l'on fait le méchant comme TERMINATOR plutôt que le gentil à la Sissi ! 3) la preuve, ce troll ! Vous êtes tombé dans le panneau... EN CONCLUSION : Je pense que vous vous souviendrez de cette syntaxe pour au moins les 10 ans qui viennent !!!! 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 * * * * * |
||||||||||||||||||||||
|
30
|
Copyright © 2000-2012 - www.developpez.com