PDA

Voir la version complète : Problème de requêtes SQL


kaninama
12/02/2007, 14h07
Bonjour tt le monde

Je vais vous casser la tête encore une fois avec ce MYSQL et les requêtes sql comme il me casse la tête a moi

Alors je vous expose le pb :
Alors j’ai deux tables

C’est un exemple ce n’est pas exactement sa mes tables,

Table parent
Idparent nom_parent


Table enfant
Idenfant idparent nom_enfant

Alors je sélectionne l’idparent de la table parent quand nom parent=parent d’enfant

Et puis l’insérer dans la table enfant

Normalement la requête sera comme suit :

SELECT idparent FROM parent WHERE nom_parent = 'parent_d’enfant ’
Je veux mettre cette requête dans une variable puis l’insérer correctement

J’utilise du java pour accéder a ma base pour sélectionner pour insérer et tt donc tt est dans une méthode que j’appel a chaque fois que je rencontre des nouveau informations a insérer ou a sélectionner

J’espère que j’ai réussi à vous faire comprendre ce que je veux faire
Donc si qlq 1 a une idée qu’il n’hésite surtt pas a me la donnée :mrgreen:

== Evitez l'écriture SMS, svp - Lisez la charte du forum ==

Bonne journée tt le monde et bonne casse tête pour les programmeurs comme moi :11:

jawzia
12/02/2007, 15h22
SELECT idparent FROM parent WHERE nom_parent = 'parent_d’enfant ’

kaninama, je vois deux problèmes :
1. le premier est syntaxique. Dans l'egalite (nom_parent= 'parent_enfant'), à cause des ''; parent_enfant sera considéré comme une chaine de caractère et donc il testera le contenu de l'attribut nom_parent à la chaine de caractère et non au contenu de l'attribut parent_enfant (s'il existe).

2. Je pense que tu dois passer par une requete de jointure (sur deux relations). Pour t'aider j'aurai besoin de voir le schéma des deux tables (tous les attributs) et formule moi la requete. Tu verras c'est très simple.

jawzia
12/02/2007, 15h39
Supposons qu'on a les tables suivantes :
Parent (nom_parent, age, ......)
Enfant (nom_parent, nom_enfant, date_de_naissance,....)

Si tu veux avoir, pour un parent, la liste de ses enfants et les informations relatives à cela , tu auras:

SELECT parent.nom_parent, nom_enfant, date_de_naissance FROM Parent, Enfant
WHERE Parent.nom_parent=Enfant.nom_parent


J'espère que cela t'aidera.

naouas
12/02/2007, 16h05
SELECT parent.nom_parent, nom_enfant, date_de_naissance FROM Parent, Enfant
WHERE Parent.IDparent=Enfant.IDparent

Au lieu de

SELECT parent.nom_parent, nom_enfant, date_de_naissance FROM Parent, Enfant
WHERE Parent.nom_parent=Enfant.nom_parent


Car IDparent est la clé primaire dans la table parent et c'est aussi la clé étrangère dans la table enfant (integrité référentielle)

naouas
12/02/2007, 16h11
SELECT parent.nom_parent, nom_enfant, date_de_naissance FROM Parent, Enfant
WHERE Parent.IDparent=Enfant.IDparent

Au lieu de

SELECT parent.nom_parent, nom_enfant, date_de_naissance FROM Parent, Enfant
WHERE Parent.nom_parent=Enfant.nom_parent


Car IDparent est la clé primaire dans la table parent et c'est aussi la clé étrangère dans la table enfant (integrité référentielle)

kaninama
12/02/2007, 16h16
recoucou tt le monde

Merci pour vos réponse jawzia,naouas

1. le premier est syntaxique. Dans l'égalité (nom_parent= 'parent_enfant'), à cause des ''; parent_enfant sera considéré comme une chaine de caractère et donc il testera le contenu de l'attribut nom_parent à la chaine de caractère et non au contenu de l'attribut parent_enfant (s'il existe).

donc de ce que je comprend si on met les '' il va le considérer comme chaîne de caractère pas comme une "variable" qui contient "une information" c'est ce que tu veux jawzia et qsq je dois mettre a la place de ça ??

WHERE Parent.nom_parent=Enfant.nom_parent

justement je ne peux pas faire sa car ce que vous appelez enfant.nom_parent est une information externe a la base c'est une information que je raméne d'un autre programme elle n'est pas contenu dans la table enfant

je vais essayer de vos poster les schéma de mes tables avec les explication

je pense que je vais essayer ta syntaxe(et celle de naouas) et je vous rend la réponse

merci vraiment a vous :4:

jawzia
13/02/2007, 11h02
ce que vous appelez enfant.nom_parent est une information externe a la base c'est une information que je raméne d'un autre programme
Ok Kaninama, je viens de comprendre ton problème. Je vais te donner une portion de code qui s'apparente à ton problème.
//connexion à la BD
$connexion=mysql_connect($server0,$user0,$pass0);
mysql_select_db($base0);
//la requete suivante vérifie si l'utilisateur
//n'existe pas dans la BD
$req0="SELECT * FROM enseignant WHERE num_ens = '$numens1' and nom_ens = '$nom1' and pren_ens = '$prenom1'";
Dans cette portion on se connecte à la base puis on vérifie si l'utilisateur existe déjà dans une base de données.
Les informations numéro, nom et prénom sont des informations externes. Pour le spécifier on rajoute le symbole $ (pour préciser que c'est une variable pluôt qu'une chaine de caractère) avec utilisation de ''.

J'espère que cela répond à ta demande.

kaninama
13/02/2007, 11h20
oui c'est exactement ça jawzia et en plus c'est la même requête que j'utilise mais il n y a aucun résultat en plus il ne me déclare aucune erreur :confused:

en plus je pense que tu utilise php moi c’est le java, je vais quand même revoir la syntaxe c’est peut être une simple erreur que je n’arrive a remarquer

ie: désolé vraiment tu te fatigue avec moi merci vraiment

jawzia
13/02/2007, 11h32
De rien Kaninama. Au plaisir.

kaninama
13/02/2007, 11h53
Youpi je viens de régler mon pb :57:
Alors c’été vraiment très simple que je suis bête :redface:

Il fallait pas faire des requête imbriquer il fallait juste parcourir le tableau récupérer par les requête select et sauvegarder le résultas puis l'insérer dans l’autre table alors j’ai pu régler mon pb grâce a cette adresse sa peu peut être aider d’autre gens alors voila l'adresse

http://*****************/isabelle.thieblemont/java/chbd.html (http://)

merci jawzia :twark: