DB2_exec : pas de prise en compte multi-tables

cs_Cartog Messages postés 2 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 15 décembre 2009 - 15 déc. 2009 à 11:41
cs_Cartog Messages postés 2 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 15 décembre 2009 - 15 déc. 2009 à 14:56
Bonjour,

Soit 1 requête utilisant 2 tables liées par 1 clef de jointure etab_id
table etablissement : colonne RNE (numéro à afficher), cle etab_id
table eleve : colonnes nom, prenom, prenom2 à afficher, cle etab_id
Issu d'1 saisie par formulaire : l'identifiant eleve $var-el

Voici 1 extrait du script ; après connexion ok à 1 base DB2 :

$select= "select rne,nom,prenom,prenom2 from schema1.eleve,schema1.etablissement where eleve_id=$var-el and eleve.etab_id=etablissement.etab_id";
echo "
établissement, nom, prénom, 2nd prénom, \";
$result = db2_exec($conn, $select);
if ($result)
{
echo \"
\";
while ($row=db2_fetch_array($result))
{
echo \"----
$row[0], $row[1], $row[2], $row[3], \";
}
}
else { print \"pas de sélection\"; }
echo "
";
echo "<hr>
";

J'obtiens le message : Warning: db2_exec() [function.db2-exec]: Statement Execute Failed et aucun résulat, donc.
Si j'enlève la référence au lien entre les 2 tables et donc si je ne lis que dans la table eleve : tout est bon.
Aucun changement si j'utilise la fonction DB2_prepare + db2_execute ou si j'utilise db2_bind_param.

Avez-vous 1 idée ? Merci. Bonne journée.

1 réponse

cs_Cartog Messages postés 2 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 15 décembre 2009
15 déc. 2009 à 14:56
En réalité, c'est parce que la référence du schéma DB2 n'est pas suffisante dans la clause from (en préfixe des tables) ; il faut également préfixer les tables des clefs de jointure.
la requête select est donc :
select rne,nom,prenom,prenom2 from schema1.eleve,schema1.etablissement where eleve_id=$var-el and schema1.eleve.etab_id=schema1.etablissement.etab_id
0
Rejoignez-nous