Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/12/2011, 15h25   #1
Invité de passage
 
Homme
Webmaster
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : Transports

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 1
Points : 1
Par défaut Gestion des Etats-Unis d'Amérique

Bonjour,

Afin de gérer la plus grande puissance économique mondiale tout en sauvant l'Europe j'aurais besoin de votre aide pour créer les deux requêtes MySQL schématisées ci-dessous. God bless you guys !

Remarques : on a les 5 tables A, B, C, D et E. J'ai renommé les colonnes en col1 et col2 pour simplifier.

1/ Supprimer tous les enregistrements de la table A tels que :
A.col1 n'existe pas en tant que (B.col1 ou B.col2 ou C.col1 ou D.col1)

2/ Supprimer tous les enregistrements de la table E tels que :
E.col1 n'existe pas en tant que A.col1

Barack
Barack Obama est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 15h37   #2
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 531
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 531
Points : 3 524
Points : 3 524
Saluton,
Je pense à des choses comme cela
1)
Code MySQL :
1
2
3
4
5
6
7
8
9
DELETE FROM A
WHERE EXISTS(
SELECT B.col1 FROM B WHERE B.col1=A.col1
UNION
SELECT B2.col1 FROM B B2 WHERE B2.col1=A.col1
UNION
SELECT C.col1 FROM C WHERE C.col1=A.col1
UNION
SELECT D.col1 FROM D WHERE D.col1=A.col1)
2)
Code MySQL :
1
2
DELETE FROM E
INNER JOIN A ON E.col1=A.col1
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 13/12/2011, 12h50   #3
Invité de passage
 
Homme
Webmaster
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : Transports

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 1
Points : 1
Je ne comprends pas à quoi sert B2 et je ne vois col2 nulle part. Du coup est-ce que ceci serait ok ?

Code :
1
2
3
4
5
6
7
8
9
DELETE FROM A
WHERE EXISTS(
SELECT B.col1 FROM B WHERE B.col1=A.col1
UNION
SELECT B.col2 FROM B WHERE B.col2=A.col1
UNION
SELECT C.col1 FROM C WHERE C.col1=A.col1
UNION
SELECT D.col1 FROM D WHERE D.col1=A.col1)
Si oui, est-ce que les deux premier SELECT pourraient être fusionnés ?

Code :
1
2
DELETE FROM E
INNER JOIN A ON E.col1=A.col1
Pour info j'ai encore rien testé.
Barack Obama est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 13h37   #4
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 531
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 531
Points : 3 524
Points : 3 524
Citation:
Envoyé par Barack Obama Voir le message
Je ne comprends pas à quoi sert B2 et je ne vois col2 nulle part. Du coup est-ce que ceci serait ok ?

Pour info j'ai encore rien testé.
Moi non plus
Mais si j'ai aliassé B en B2 ce n'est pas pour des prunes.
Par contre, effectivement, il faut corriger
Code MySQL :
SELECT B2.col1 FROM B B2 WHERE B2.col2=A.col1
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 14h02   #5
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
Bonjour,


J'ai peut-être mal compris l'énoncé mais j'aurai plutôt tendance à utiliser un NOT EXISTS dans les deux cas qu'un exists / jointure.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/12/2011, 14h17   #6
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 531
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 531
Points : 3 524
Points : 3 524
Tu as tout à fait raison NOT EXISTS évidemment.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 14h23   #7
Invité de passage
 
Homme
Webmaster
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : Transports

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 1
Points : 1
Donc si je récapitule ça donne ça :

Code :
1
2
3
4
5
6
7
8
9
DELETE FROM A
WHERE NOT EXISTS(
SELECT B.col1 FROM B WHERE B.col1=A.col1
UNION
SELECT B2.col1 FROM B B2 WHERE B2.col2=A.col1
UNION
SELECT C.col1 FROM C WHERE C.col1=A.col1
UNION
SELECT D.col1 FROM D WHERE D.col1=A.col1)
Et pour ce bloc comment on peut intégrer un NOT EXISTS ?

Code :
1
2
DELETE FROM E
INNER JOIN A ON E.col1=A.col1
Barack Obama est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 14h31   #8
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
Bonjour,

Comme ceci : http://sqlpro.developpez.com/cours/sqlaz/sousrequetes/

ce serai intéressant de comprendre un minimum les solutions proposées, ca vous permetra d'être autonome plus tard
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 15h08   #9
Invité de passage
 
Homme
Webmaster
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : Transports

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 1
Points : 1
J'apprends... et si je comprends bien je devrais ne pas trop me tromper en écrivant ceci (qui revient finalement à calquer l'idée du premier bloc) :

Code :
1
2
3
DELETE FROM E
WHERE NOT EXISTS(
SELECT A.col1 FROM A WHERE A.col1=E.col1)
Vous confirmez ?
Barack Obama est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 15h27   #10
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 531
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 531
Points : 3 524
Points : 3 524
C'est bien, en fait, tu peux probablement ici jouer avec les jointures
Code MySQL :
1
2
3
DELETE FROM E
LEFT JOIN A ON E.col1=A.col1
WHERE A.col1 IS NULL
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 13/12/2011, 17h02   #11
Invité de passage
 
Homme
Webmaster
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : Transports

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 1
Points : 1
Merci à vous
Barack Obama est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 18h26   #12
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 531
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 531
Points : 3 524
Points : 3 524
Nedankinde.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h37.


 
 
 
 
Partenaires

Hébergement Web