Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1567 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Problème d'exécution d'une requête SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] Problème d'exécution d'une requête SQL

n°2125146
chabn
Posté le 07-02-2012 à 09:22:14  profilanswer
 

Bonjour,  
 
Tout d'abord, merci beaucoup pour vos réponses et vos remarques.
 
1) Je voulais savoir l'emplacement de la base et ses tables associés après leur création.
Où se trouve exactement la base créée dans le répertoire d'installation de MySQL parce que je n'ai pas trouver dans C:\Program Files\MySQL\MySQL Server 5.5\data ?
 
2) Je voulais savoir le rôle d'ordre SQL "commit" puisque même sans "commit" on aura la persistance des données ou bien il faut "commit" pour valider les différentes manipulations effectuées sur la base de données créée ?
 
3) Est ce que on peut mettre de commentaires en SQL comme dans les autres langages de programmation ?  
 
4) Je trouve de difficultés pour formuler les requêtes suivantes :
 
 

Citation :

a) Intitulé des services ayant en commande au moins une pièce de couleur rouge.
b) Intitulé des services n'ayant pas en commande la pièce P5.
c) Numéro des services ayant en commande toutes les pièces.
d) Numéro des services ayant en commande au moins toutes les pièces commandées au service S3.


 
 
Voici le schéma relationnel :
 

Citation :

CLIENT (NumC, NOM, ADRESSE)  
SERVICE (NumS, INTITULE, LOCALISATION)  
PIECE (NumP, DESIGNATION, COULEUR, POIDS)
ORDRE (#NumP, #NumS, #NumC, QUANTITE)


 
 
Merci

mood
Publicité
Posté le 07-02-2012 à 09:22:14  profilanswer
 

n°2125159
flo850
moi je
Posté le 07-02-2012 à 11:15:27  profilanswer
 

c'est pas bien de faire faire ses devoirs

n°2125188
chabn
Posté le 07-02-2012 à 14:07:28  profilanswer
 

Je suis d'accord avec vous.
J'ai besoin des indications si c'est possible.

n°2125195
flo850
moi je
Posté le 07-02-2012 à 14:19:10  profilanswer
 

1/ c'est indiqué dans le fichier de conf de mysql (' mais je ne sais pas ou ile st sous windows )
2/ une requete hors transaction n'a aps besoin d'un commit
3/ oui, dans les requetes, les procédures et la structure des table
4/ tu as fait quoi comme requetes ?µ

n°2125227
chabn
Posté le 07-02-2012 à 17:21:20  profilanswer
 

Citation :

1/ c'est indiqué dans le fichier de conf de mysql (' mais je ne sais pas ou ile st sous windows )
 


Pardon, je n'ai pas trouvé même le fichier conf de mysql.
Voici la liste des dossiers trouvés sous "C:\Program Files\MySQL\MySQL Server 5.5" :
Bin, include, dta, lin et share
 

Citation :

2/ une requete hors transaction n'a aps besoin d'un commit


 
Je n'ai pas compris une requête hors transaction.
Quelle est la différence entre une requête et une transaction ?
Je suis en train d'exécuter des requêtes de LDD, LMD et LID.  
Est ce que ce type de requêtes besoin de "commit" ou de "rollback"  ?
 

Citation :

3/ oui, dans les requetes, les procédures et la structure des table


 
Comment on note les commentaires en SQL ?
Exemple c'est possible ?
 

Citation :

4/ tu as fait quoi comme requetes ?µ


 

Citation :

a) Intitulé des services ayant en commande au moins une pièce de couleur rouge.


Code :
  1. Select INTITULE
  2. from SERVICE s, ORDRE o, PIECE p
  3. where s.NumS=o.NumS
  4. and p.NumP=o.NumP
  5. and p.COULEUR='rouge';


 

Citation :

b) Intitulé des services n'ayant pas en commande la pièce P5.


Code :
  1. Select INTITULE
  2. from SERVICE
  3. where NumS not in
  4. (Select INTITULE
  5. from SERVICE s, ORDRE o, PIECE p
  6. where s.NumS=o.NumS
  7. and p.NumP=o.NumP
  8. and p.NumP='P5');


 

Citation :

c) Numéro des services ayant en commande toutes les pièces.


Code :
  1. Select s.NumS
  2. from SERVICE s, ORDRE o, PIECE p
  3. where s.NumS=o.NumS
  4. and p.NumP=o.NumP;


 

Citation :

d) Numéro des services ayant en commande au moins toutes les pièces commandées au service S3.


Code :
  1. Select INTITULE
  2. from SERVICE s, ORDRE o, PIECE p
  3. where s.NumS=o.NumS
  4. and p.NumP=o.NumP
  5. and s.NumS='S3';


n°2125270
adwer
Comité anti-STS
Posté le 07-02-2012 à 22:22:52  profilanswer
 

En fait, une transaction, c'est une série d'instruction qui vont modifier ta base de données. Tu vas vouloir utiliser une transaction quand t'as peur qu'un souci vienne foutre le bordel dans les opérations que tu fais dessus. Un exemple :
 
Tu as un site de vente en ligne, et tu enregistres un nouvel article. Cela se traduit dans ta BDD par des inserts dans plusieurs tables différentes. Si en plein milieux de tes 12 inserts, t'as un problème (coupure de courant/internet), ça peut te mettre ta base de données dans un état que tu ne connais pas (et accessoirement foutre le bordel, imagines que t'enregistres une télé plasma, mais que ça plante au moment ou tu insères le prix. Tu peux te retrouver à vendre des TV gratos :p ). La transaction va "envelopper" toutes ces opérations, et si l'une d'entre elle échoue, alors aucune autre ne sera validée, et ta BDD restera inchangée.
 
Mais si tu débutes dans les BDD, je pense pas que tu voies masse de transactions.
 
Pour les requêtes, j'utiliserait les jointures, ça caractérise pas mal les choses déja.  
 
Par exemple, pour la première

Code :
  1. SELECT INTITULE
  2. FROM SERVICE s INNER JOIN ORDRE o ON s.NumS=o.NumS
  3.         INNER JOIN PIECE p ON p.NumP=o.NumP
  4. WHERE p.COULEUR = 'rouge'


 
Dis nous si ça marche (et si t'as d'autres questions :) )
Nico

n°2126946
chabn
Posté le 17-02-2012 à 12:55:14  profilanswer
 

Citation :

d) Numéro des services ayant en commande au moins toutes les pièces commandées au service S3.


 
Voici ma proposition :

Code :
  1. SELECT NumS
  2. FROM ORDRE
  3. Group By NumS
  4. Having count(distinct NumP) >= (Select count(distinct NumP)
  5. From ORDRE where NumS='S3');


 
Mais, il n'affiche pas tous les résultats. Il y a un service qui répond au requête posée mais ce service n'apparait pas dans le résultat final.
 
Pourquoi ?
A mon avis, a part le nombre de pièces il faut aussi comparer entre les noms de pièces. Si oui, comment on procède ?
 
Merci.


Message édité par chabn le 17-02-2012 à 13:07:31
n°2126962
MEI
|DarthPingoo(tm)|
Posté le 17-02-2012 à 16:16:44  profilanswer
 

flo850 a écrit :

1/ c'est indiqué dans le fichier de conf de mysql (' mais je ne sais pas ou ile st sous windows )
2/ une requete hors transaction n'a aps besoin d'un commit
3/ oui, dans les requetes, les procédures et la structure des table
4/ tu as fait quoi comme requetes ?µ


Pour le 2 c'est un peu incomplet car :
- les requêtes DDL (Data Definition Langage) n'ont jamais besoin de commit pour être effective
- les requêtes DML (Data Modification Langage) ont toujours besoin de commit pour pour être effective
 
Après ce n'est pas parce que les SGBD utilisent par défaut un mode "auto-commit" qu'il n'y a pas eu de transaction et de commit. :spamafote:


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Problème d'exécution d'une requête SQL

 

Sujets relatifs
Perl: afficher le résultat d'une requête sqlPerformances Curseur / Complexité requête SQL
[Résolu] [SGBD/SQL] Import MySQL et caractères spéciauxconfiguration utilisateur mysql wamp
probleme configuration phpmyadmin[Oracle] paramètres was_captures=NO dans $SQL_CAPTURE_BIND
Import de données sous MySQLPHP hidden variable $_POST MYSQL
Plus de sujets relatifs à : [MySQL] Problème d'exécution d'une requête SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR