Requete
Fermé
natasha82
Messages postés
55
Date d'inscription
vendredi 20 mars 2015
Statut
Membre
Dernière intervention
9 juin 2015
-
24 avril 2015 à 10:44
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 - 24 avril 2015 à 16:25
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 - 24 avril 2015 à 16:25
A voir également:
- Requete
- Requête sql date supérieure à ✓ - Forum Programmation
- Il y a eu un problème avec cette requête. nous travaillons à sa résolution aussi vite que nous le pouvons. - Forum Facebook
- La requête graphql n’est pas autorisée facebook - Forum Facebook
- Requête sql pix - Forum Python
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de pomme mais pas de pomme de terre ? - Forum Minecraft
2 réponses
jordane45
Messages postés
38241
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 septembre 2024
4 689
24 avril 2015 à 11:53
24 avril 2015 à 11:53
Bonjour,
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.
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.
natasha82
Messages postés
55
Date d'inscription
vendredi 20 mars 2015
Statut
Membre
Dernière intervention
9 juin 2015
Modifié par jordane45 le 24/04/2015 à 14:39
Modifié par jordane45 le 24/04/2015 à 14:39
bonsoir voici le code:
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
.
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
.
jordane45
Messages postés
38241
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 septembre 2024
4 689
24 avril 2015 à 14:41
24 avril 2015 à 14:41
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 :
Tu ne peux pas, à ma connaissance, faire un SELECT .... AND INSERT .......
Ce sont deux requête distinctes...
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...
natasha82
Messages postés
55
Date d'inscription
vendredi 20 mars 2015
Statut
Membre
Dernière intervention
9 juin 2015
24 avril 2015 à 15:34
24 avril 2015 à 15:34
oui c'est vrai
elle ne fonctionne pas j'ai eu cette erreur sur la bdd :
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
jordane45
Messages postés
38241
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 septembre 2024
4 689
>
natasha82
Messages postés
55
Date d'inscription
vendredi 20 mars 2015
Statut
Membre
Dernière intervention
9 juin 2015
Modifié par jordane45 le 24/04/2015 à 16:25
Modifié par jordane45 le 24/04/2015 à 16:25
Ben oui.....
Je ne sais pas ce que viens faire ce SELECT devant ta requête INSERT......
Toi il te faut juste faire :
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... :
PS: Je suppose que ton champ id_forma est de type AUTO-INCREMENTE ... donc pas besoin de le spécifier !
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 !
24 avril 2015 à 13:32
24 avril 2015 à 13:53
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