IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

[requete SQL] souci de synthaxe


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 16
    Points
    16
    Par défaut [resolu][requete SQL] souci de synthaxe
    Bonjour j ai un pti souci avec la requete suivante :

    Je pense que mon problème viens d une requete SQL mal construite donc je post ici

    Je souhaite affichier tous les details d un contrats dans un tableau HTML. En clickant sur une entete du tableau , je reaffiche le tableau en triant ( ORDER BY ) en fonction du champs que j ai cliké.

    Je vous montre la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $reqcont = " SELECT cont_num,cont_etat,id_client,iduser2,cont_loyer,cont_mntfacturation,cont_marge,cont_mntcmd,id_part,
    FROM contrats ORDER BY ".$type;
    $rescont = mysql_query($reqcont,$connexion);
    id_client correspond a la table clients
    iduser2 à la table users
    id_part à la table partenaires

    Jusqu ici tout va bien. Sauf que , mes champs id_client , iduser2 et id_part sont les identifiants et moi je ne souhaite recuperer que les libellés.
    Pour cela j ai fait 3 nouvelles requetes pour recuperer chaque libellé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	$reqcontc = "SELECT * FROM clients WHERE id_client='".$rowcont['id_client']."'";
    	$rescontc = mysql_query($reqcontc,$connexion);
    	$rowcontc = mysql_fetch_array($rescontc);	
     
    	//recup du nom partenaire
    	$reqcontp = "SELECT * FROM partenaires WHERE id_part='".$rowcont['id_part']."'";
    	$rescontp = mysql_query($reqcontp,$connexion);
    	$rowcontp = mysql_fetch_array($rescontp);
     
    	//recup gestionnaire
    	$reqcontg = "SELECT * FROM users WHERE id='".$rowcont['iduser2']."'";
    	$rescontg = mysql_query($reqcontg,$connexion);
    	$rowcontg = mysql_fetch_array($rescontg);
    Le problème maintenant c est que je ne vois pas du tout comment je peux faire pour trier le tableau quand on clique sur les entetes libelles.

    Merci d avance de votre aide.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Pourquoi tu ne fais pas une SEULE requête grâce à des jointures (INNER JOIN, LEFT JOIN, etc.) et en spécifiant dans la clause SELECT uniquement les libellés ?

    D'autre part, tu pourrais construire dynamiquement ta requête afin de modifier la clause ORDER BY selon le tri que souhaite effectuer l'utilisateur.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Merci pour la reponse, j ai un peu de mal en SQL mais ca donnerai quelque chose come ca?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    SELECT cont_num,cont_etat,cont_loyer,cont_mntfacturation,cont_marge,cont_mntcmd,id_part,
    	c.societe,u.prenom,p.partenaire FROM cont contrats,c clients,u users,p partenaires 
       LEFT JOIN clients ON (cont.id_client=c.id_client) 
       LEFT JOIN users ON (cont.uduser2=u.id)
       LEFT JOIN partenaires ON (cont.id_part=p.id_part)
    ORDER BY".$type;
    [/quote]

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    j ai essayé avec cette requete. Mais ca me renvoie une infinité de fois la meme ligne. si quelqu un pouvait m aider silvouplait , je suis perdu

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    A priori ce serait plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SELECT   CONT_NUM,
             CONT_ETAT,
             CONT_LOYER,
             CONT_MNTFACTURATION,
             CONT_MARGE,
             CONT_MNTCMD,
             ID_PART,
             C.SOCIETE,
             U.PRENOM,
             P.PARTENAIRE
    FROM     CONTRATS CONT
             LEFT JOIN CLIENTS C
               ON (CONT.ID_CLIENT = C.ID_CLIENT)
             LEFT JOIN USERS U
               ON (CONT.UDUSER2 = U.ID)
             LEFT JOIN PARTENAIRES P
               ON (CONT.ID_PART = P.ID_PART)
    ORDER BY $type;
    Tu as commis pas mal d'erreurs notamment en inversant le sens des tables et de leurs alias.

    Ceci dit, si tu effectues les 3 requêtes de ton 1er post systématiquement alors tu peux utiliser une clause INNER JOIN plutôt que LEFT JOIN.

    Si tu veux plus d'infos sur les jointures, tu trouveras ton bonheur sur le site de SQLPro.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    merci beaucoup . Je vais aller voir ca de suite.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Ok c est bon ca marche niquel . Merci Magnus

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD14] Date dans requete SQL (souci transaction)
    Par mogwai162 dans le forum WinDev
    Réponses: 7
    Dernier message: 03/06/2010, 10h14
  2. Souci sur requete SQL
    Par yaya0057 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/04/2007, 10h19
  3. petit soucis de requete SQL
    Par graphicsxp dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/02/2006, 16h38
  4. Requete SQL ajout Souci avec ""
    Par patrick55 dans le forum Access
    Réponses: 1
    Dernier message: 10/12/2005, 18h11
  5. soucis a faire une requete SQL
    Par navona dans le forum Langage SQL
    Réponses: 7
    Dernier message: 01/09/2005, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo