Probleme requete avec plusieurs tables

Résolu
aureliemerlin Messages postés 82 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 17 avril 2013 - 16 déc. 2010 à 11:14
aureliemerlin Messages postés 82 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 17 avril 2013 - 16 déc. 2010 à 14:50
Bonjour à tous

je voudrais afficher ma liste de facture mais j'ai un problème avec mes jointures de requêtes
voici le code
<doctype html public "-//w3c//dtd xhtml 1.0 strcit//en"
"http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">
<html xmlns= "http://www.w3.org/1999/xhtml" xml/lang="fr"
lang="fr"
<head>
<title>banques</title>
<META HTTP-equiv="content-type"
content="text/html, charset=utf-8"/>
</head>

<?php
require_once('includes/templategc.php');
require_once('includes/magicquotes.inc.php');
require_once('includes/auxiliaires.inc.php');
require_once('includes/bd.inc.php');
$resultat mysqli_query($lien, 'select No Facture, Code client, Code Commercial, Date, Nomination facture, Evolution facture, PHT facture, CodeAgence, CodeRegion, TypeFacture, TypeClient2, NomEmp, NomSoc, NomAgence, VilleSoc, VilleEmp, VilleBQ, DateReglement, NumeroInterne from bdfacture, bdclient, bdbanques where bdfacture.[code commercial] bdclient.CodeCom and bdfacture.Code client = bdclient.Num and bdfacture.Code client = bdbanques.Num');
if (!$resultat)
{
$erreur = 'erreur de la lecture : '.mysqli_error($lien);
include 'erreur.html.php';
exit();
}

while ($ligne = mysqli_fetch_array($resultat))
{
$bdbanques[]= array('NumBanque' => $ligne ['NumBanque'], 'Enseigne' => $ligne['Enseigne'], 'NomAgence' => $ligne['NomAgence'], 'VilleBq' => $ligne['VilleBq']);
}
?>
<?php echo " Num |Type |Nom agence |Ville |- |- |\" ; ?>

<?php foreach ($bdbanques as $banques): ?>
<form action =\"CONSULTER\" method=\"POST\">
<?php echo \"----
" .htmlspecialchars($banques['NumBanque'], ENT_QUOTES, 'utf-8'). ", \" ; ?>
<?php echo \"" .htmlentities(htmlspecialchars($banques['Enseigne'], ENT_QUOTES, 'utf-8')). ", \" ; ?>
<?php echo \"" .htmlspecialchars($banques['NomAgence'], ENT_QUOTES, 'utf-8'). ", \" ; ?>
<?php echo \"" .htmlspecialchars($banques['VilleBq'], ENT_QUOTES, 'utf-8'). ", \" ; ?>
[index.php ] [creabanque.php ]

<?php

pied();
?>

</html>

et le message d'erreur est les suivant
erreur de la lecture : Erreur de syntaxe pr�s de '[code commercial] = bdclient.CodeCom and bdfacture.Code client = bdclient.Num an' � la ligne 1

je ne sais pas comment corriger ce problème

quelqu'un a t il une idée ???

merci d'avance
bonne journée
Aurélie

2 réponses

Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
16 déc. 2010 à 14:15
C'est ta requête SQL qui est mal formatée...
il ne faut pas de [ ] dans la requéte

J'aurais juste 2 remarques
1-> Il est conseillé d'avoir des noms sans espaces/ caractères spéciaux accentués pour les noms de bases, de Tables et de champs
2-> Si tu as plusieurs bases, passe par des alias. Tu auras une meilleure lisibilité de tes requétes.

Ta requéte :

'select No Facture, Code client, Code Commercial, Date, Nomination facture, Evolution facture, PHT facture, CodeAgence, CodeRegion, TypeFacture, TypeClient2, NomEmp, NomSoc, NomAgence, VilleSoc, VilleEmp, VilleBQ, DateReglement, NumeroInterne from bdfacture, bdclient, bdbanques where bdfacture.[code commercial] = bdclient.CodeCom and bdfacture.Code client = bdclient.Num and bdfacture.Code client = bdbanques.Num'

La requête que j'aurais plutôt vue avec les noms de champs sans espaces :

'select A.No_Facture, B.Code_client, X.Code_Commercial, X.Date, X.Nomination_facture, X.Evolution_facture, X.PHT_facture, X.CodeAgence, X.CodeRegion, X.TypeFacture, X.TypeClient2, X.NomEmp, X.NomSoc, X.NomAgence, X.VilleSoc, X.VilleEmp, X.VilleBQ, X.DateReglement, X.NumeroInterne from bdfacture A, bdclient B, bdbanques C where A.code_commercial B.CodeCom and A.Code_client B.Num and B.Code_client = C.Num'
[ le X remplace l'alias de la Table ]
Si tu veut optimiser tu peut utiliser JOIN

Au vue de ta structure je dirai que :

SELECT * FROM bdclient NATURAL JOIN bdfacture, bdbanques

Devrais avoir le même retour.

Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.
3
aureliemerlin Messages postés 82 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 17 avril 2013
16 déc. 2010 à 14:50
merci beaucoup pour ta réponse je viens de modifier avec ce que tu m'as dis et cela fonctionne

encore merci
Bonne journée

Aurélie
0
Rejoignez-nous