Requete

natasha82 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,j'ai la table formation et spécialité et département:

formation:( id_forma,lib_form,id_depart,domaine_forma,id_spec,type_forma)
specialite(id_spec,lib_spec)
departement(id_depr,nom_depart,id_fac,id_gest)


alors je veux faire une requête pour ajouter une formation mais j'arrive pas a construire une jointure il y a beaucoup de relation entre eux ,,pouvez vous me donner ne idée svp.merci

2 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,


je veux faire une requête pour ajouter une formation mais j'arrive pas a construire une jointure

Déjà .. on ne fait pas de JOINTURE lors d'un INSERT (ni d'un UPDATE)...
Tu insères les données dans ta première table.. puis dans la suivante...etc...
Donc dan l'ordre : specialite(id_spec,lib_spec) (tu récupères l'ID nouvellement créé )
Puis departement(id_depr,nom_depart,id_fac,id_gest) (tu récupères l'ID nouvellement créé )
Et enfin formation:( id_forma,lib_form,id_depart,domaine_forma,id_spec,type_forma)
Dans lequel tu te sers des ID créés dans tes deux autres tables.
1
natasha82 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention  
 
bonsoir,j'ai fait l'insertion pour les deux première table mais la troisième j'y arrive pas ..merci
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > natasha82 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention  
 
Si tu ne nous montres pas ton code .. comment penses tu que nous pourront t'aider ?

NB : Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
0
natasha82 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention  
 
bonsoir voici le code:


public class OperationFormation {
  
 
private ArrayList<Formation> Formations =new ArrayList<Formation>();

  public ArrayList<Formation> getFormations() {
      return Formations;
  }

  public void setFormations(ArrayList<Formation> Formations) {
      this.Formations = Formations;
  }
         
 public void add(Formation f){
        
   try {
      Class.forName("com.mysql.jdbc.Driver");
      Connection cn=DriverManager.getConnection("jdbc:mysql://localhost:3306/bdd","root","");
      PreparedStatement pr = cn.prepareStatement("(SELECT id_spec.formation,id_spec.sepcialite From formation,specialite WHERE id_spec.formation =id_spec.specialite)AND INSERT INTO  formation(id_forma,domaine_forma,type_forma,id_spec)VALUES(NULL,?,?,?)");
      pr.executeQuery();
     
      pr.setString(1, f.getDomaine_forma());
      pr.setString(2,f.getType_forma());
      pr.setString(3, f.getId_spec());
    
     pr.execute();
            
   } //  Etudiants.add(e);
    catch (Exception ex) {
      ex.printStackTrace();
   }

 }
     


merci

EDIT : Ajout des balises de code
+ remise en forme du code !
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
As tu testé ta requête en direct dans ta BDD pour savoir si elle fonctionne ?
Car je ne suis pas persuadé que ta requête (ci-dessous) fonctionne :
(SELECT id_spec.formation,id_spec.sepcialite From formation,specialite WHERE id_spec.formation =id_spec.specialite)
AND INSERT INTO  formation(id_forma,domaine_forma,type_forma,id_spec)VALUES(NULL,?,?,?)


Tu ne peux pas, à ma connaissance, faire un SELECT .... AND INSERT .......
Ce sont deux requête distinctes...
0
natasha82 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention  
 
oui c'est vrai
elle ne fonctionne pas j'ai eu cette erreur sur la bdd :



1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND INSERT INTO formation(id_forma,domaine_forma,type_forma,id_spec)VALUES(NULL' at line 2
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > natasha82 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention  
 
Ben oui.....
Je ne sais pas ce que viens faire ce SELECT devant ta requête INSERT......

Toi il te faut juste faire :
INSERT INTO  formation(domaine_forma,type_forma,id_spec)VALUES(?,?,?)

En remplaçant les ? par les valeurs correspondantes ... obtenues éventuellement par des requête SELECT (lancées depuis ton code java... pas DANS la requête ! )
... ce que tu sembles déjà faire... :
pr.setString(1, f.getDomaine_forma());
pr.setString(2,f.getType_forma());
pr.setString(3, f.getId_spec());


PS: Je suppose que ton champ id_forma est de type AUTO-INCREMENTE ... donc pas besoin de le spécifier !
0