Eléphanteau du PHP |
21 Messages
22 mars 2021, 18:22
Merci pour ces suggestions. FULL JOIN effectivement ne fonctionne pas, mais dans ce cas UNION ne me paraît pas possible car le contenu du champ d'identification incrémenté (ici num) a même contenu pour les 2 tables, seul le contenu des autres champ est différent.
En tâtonnant, j'ai réussi à obtenir le résultat de la jointure par les opérations suivantes:
-J'ai renommé tous les champs de table2 d'un nom différent de ceux de table1 (en l'occurrence en ajoutant le chiffre 2, soit par exemple aei dans table1 et aei2 dans table2, num dans table1 et num2 dans table2)
-j'ai remplacé FULL par INNER (ou par rien ça fonctionne aussi). (les 2 tables ayant les même valeurs dans le champ d'identification, ça se comprend que FULL équivaille à INNER dans ce cas)
Ces 2 conditions sont nécessaires, du moins je n'ai pas réussi autrement:
soit:
$query="SELECT * FROM table1 INNER JOIN table2 ON
table1.num=table2.num2;";
$res=$bdd->query($query);
$ligne=$res->fetch();
$aei=$ligne['aei'];
$aei2=$ligne['aei2'];
echo "<br>",$aei," ",$aei2,"<br>";
Remarque: les expressions suivantes ne fonctionnent pas (elles sont d'ailleurs inutiles dans ce cas)
$aei1=ligne['table1.aei'];
$aei2=ligne['table2.aei2'];
C'est le même problème avec la formulation suivante équivalant à FULL JOIN si les champs ont des noms identiques:
$query="SELECT * FROM table1,table2 WHERE num=num2;";
$res=$bdd->query($query);
$ligne=$res->fetch();
$aei=$ligne['aei'];
$aei2=$ligne['aei2'];
echo "<br>",$aei," ",$aei2,"<br>";
Si les champs ont des noms différents, ça fonctionne.
On remarquera que pour le WHERE la formulation
table1.num=table2.num2
ne fonctionne pas, mais la formulation
num=num2
fonctionne, et elle est effectivement suffisante.