Requete sql

Résolu
Bonjour,

j'ai un problème de requete sql.
j'ai 3 table :
enseigne(idcommercant(clé primaire),nom,prenom,nomenseigne)
promotion(idpromo(clé primaire),titre,descriptif)
faire(idcommercant(clé étrangère),idpromo(clé étrangère))

je souhaite sortir de ces tables la requete qui me permettrais d'obtenir : le titre de la promation par rapport au nom de l'enseigne.

ps: je rentre au clavier le nom de l'enseigne.
clairement je souhaite obtenir le titre de la promotion par rapport au nom de l'enseigne que je rentre au clavier.

pouvez vous m'apporter vos lumière?
merci
Configuration: Windows Vista
Internet Explorer 7.0

10 réponses

  1. Contributeur
    select titre from enseigne, faire, promotion where enseigne.idcommercant=faire.idcommercant and promotion.idpromo=faire.idpromo and nomenseigne='cequetuveux';

    1. Bonjour

      Je ne suis pas un expert mais d'après moi une seule requête sql ne peut pas faire ça.
      Je procéderai comme suit :

      récupérer l'ID de l'enseigne :
      SELECT idcommercant FROM enseigne WHERE nomenseigne='le_nom_demandé'

      puis récupérer le titre de la promotion en fonction de l'ID obtenu précédemment:
      SELECT titre FROM promotion WHERE idpromo='ID_obtenu_précédemment'
      1. Contributeur
        Si si, avec une requête et des jointures, on y arrive (voir ma réponse plus haut).

    2. j'ai essayé ta requete HostOfSeraphim, j'essaie de l'afficher avec un fetch_array mais j'ai l'erreur suivante Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
      1. Contributeur
        Fais un copier/coller de ton code ici (en retirant login/mdp/serveur de la base), tu as dû oublier quelque chose.

    3. voila

      function ajout_promo()
      {
      /*Connexion*/
      $connexion=mysql_connect("localhost","root","")
      or die('Connexion refusée.');
      /*Sélection de la base de donnée*/
      $baseDeDonnee=mysql_select_db("essai",$connexion)
      or die('La sélection de la base de donnée a échoué.');

      $requete="select idpromo from promotion where lastp=1";
      $resultat=mysql_query($requete);

      $idpromo=mysql_result($resultat,0);
      $newId=$idpromo+1;

      $enseigne=$_POST['enseigne'];
      $titre = $_POST['titre'];
      $description = $_POST['description'];
      $datedeb = $_POST['datedeb'];
      $datefin = $_POST['datefin'];

      $requetec = "select idcommercant from enseigne where nomenseigne='".$_POST['enseigne']."'";
      $resultatc=mysql_query($requetec);
      //echo("$resultatc");

      if(!$resultatc){
      echo("je suis ici");
      $requeted='INSERT INTO promotion VALUES("'.$newId.'","'.$titre.'","'.$description.'","'.$datedeb.'","'.$datefin.'",1);';
      $resultatd=mysql_query($requeted) or die('Insertion non effectuée.');
      $requete='UPDATE promotion SET lastp=0 WHERE idpromo='.$idpromo;
      $resultat=mysql_query($requete)
      or die('Mise à jour du champs "last" impossible.');

      }
      else{
      echo("je suis dans le else");

      $sql="select promotion.titre, promotion.description, promotion.datedeb, promotion.datefin from enseigne, faire, promotion where enseigne.idcommercant=faire.idcommercant and promotion.idpromo=faire.idpromo and nomenseigne =''".$_POST['enseigne']."''; " or die("Erreur SQL : $query<br/>".mysql_error());
      //$res=mysql_query($sql) or die('Mise à jour du champs "last" impossible.');

      $res=mysql_query($sql);
      $tableau=mysql_fetch_array($res)or die("Erreur SQL : <br/>".mysql_error());

      echo '<tr><td>','titre : ', $tableau['titre'] ,'<br />','<tr><td>','description : ',$tableau['description '],'<br />','<tr><td>','date début : ',$tableau['datedeb'],'<br />','date fin : ',$tableau['datefin'];
      echo '<br />';
      1. Contributeur
        $sql="select promotion.titre, promotion.description, promotion.datedeb, promotion.datefin from enseigne, faire, promotion where enseigne.idcommercant=faire.idcommercant and promotion.idpromo=faire.idpromo and nomenseigne =''".$_POST['enseigne']."''; " or die("Erreur SQL : $query<br/>".mysql_error());

        =>

        $sql="select promotion.titre, promotion.description, promotion.datedeb, promotion.datefin from enseigne, faire, promotion where enseigne.idcommercant=faire.idcommercant and promotion.idpromo=faire.idpromo and nomenseigne ='".$_POST['enseigne']."'; " or die("Erreur SQL : $query<br/>".mysql_error());

    4. si tu peux m'aider sa serait sympa
      1. Contributeur
        Voir ma réponse plus haut, tu avais un problème de guillemets visiblement.

        Par contre, essaye toujours la requête sur MySQL, ça permettra déjà de savoir si elle est comme tu la voulais ou non.

    5. je n'ai plus d'eereur mysql_fetch mais cette erreur apparait : erreur sql

      l'erreur vient de cette ligne

      $tableau=mysql_fetch_array($res)or die("Erreur SQL : <br/>".mysql_error());
      1. Contributeur
        Commence par vérifier la requête dans MySQL (PHPMyAdmin).

    6. oui elle fonctionne la requete.
      1. Contributeur
        OK.

        Heu, je viens de voir un truc : dans "or die", il manque un espace avant "or'...

    7. je te remercie beaucoup.
      ma requete fonctionne du tonnere ou plutot ta requete.
      merci !!!!!
      1. Contributeur
        De rien. Trouvé ce qui n'allait pas dans le code PHP ?