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 :

Probleme de création de requete SQL


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Points : 39
    Points
    39
    Par défaut Probleme de création de requete SQL
    Bonjour,

    C'est la fin d'année est mes neuronnes sont fatigués ! je cale !

    J'ai une table1 qui contient mes enregistrements

    Les champs => Les valeur
    Champs1 => 2
    Champs2 => 4
    Champs3=> 10

    J'ai une autre table2 qui contient le texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE `table2` (
      `id` int(50) NOT NULL auto_increment,
      `mod` varchar(255) NOT NULL default '',
      PRIMARY KEY  (`id`)
    ) TYPE=MyISAM AUTO_INCREMENT=25 ;
     
    INSERT INTO `modalite` (`id`, `mod`, `cat`) VALUES (2, 'valeur bla bla');
    INSERT INTO `modalite` (`id`, `mod`, `cat`) VALUES (4, 'valeur bla bla bli bli');
    INSERT INTO `modalite` (`id`, `mod`, `cat`) VALUES (10, 'valeur toto');
    Donc en gros j'essai de faire afficher le texte "valeur" en fonction de mes enregistrement ...
    je voudrais donc afficher :
    valeur bla bla
    valeur bla bla bli bli
    valeur toto'



    Merci de votre aide

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    Voici la structure de la table1 pour info.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE `table1` (
      `id` int(11) NOT NULL auto_increment,
      `cat` varchar(10) NOT NULL default '',
      `pays` varchar(200) NOT NULL default '',
      `age` varchar(200) NOT NULL default '',
      `type` varchar(250) NOT NULL default '',
      `qui` varchar(250) NOT NULL default '',
      PRIMARY KEY  (`id`)
    ) TYPE=MyISAM AUTO_INCREMENT=7 ;
    J'ai bien fait une requete comme ceci qui fonctionne qui va me chercher l'intitulé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $test = mysql_query("SELECT * FROM table1, table2 WHERE table1.cat=table2.id ");
     
    $test = mysql_query("SELECT * FROM table1, table2 WHERE table1.qui=table2.id ");
     
    $test = mysql_query("SELECT * FROM table1, table2 WHERE table1.pays=table2.id ");
     
    $test = mysql_query("SELECT * FROM table1, table2 WHERE table1.age=table2.id ");
     
    $test = mysql_query("SELECT * FROM table1, table2 WHERE table1.type=table2.id ");
    Mais il faudrait faire 5 requête pour les 5 champs ( cat,pays,age,type,qui) ? n'y a t'il pas moyen d'optimiser ceci ?

  3. #3
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Tu peux tout réunir en une requête à 5 jointures :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT *
    FROM table1 a JOIN table2 b1
      ON a.cat = b1.id
                         JOIN table2 b2
      ON a.qui = b2.id
                         JOIN table2 b3
      ON a.pays = b3.id
                         JOIN table2 b4
      ON a.age = b4.id
                         JOIN table2 b5
      ON a.type = b5.id
    Mais bon, ça ne donne pas le résultat.
    Qu'est-ce que tu aimerais obtenir ?

    [EDIT]
    Ok, j'avais mal lu.. désolé.
    Donc si tu peux soit réunir les 5 requêtes avec des UNION ALL,
    soit simplement... réunir tous tes critères :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT *
    FROM Table1, Table2
    WHERE table1.cat=table2.id
    OR table1.qui=table2.id 
    OR table1.pays=table2.id
    OR table1.type=table2.id
    Là par contre, si jamais tes différentes "colonnes" peuvent partager les mêmes id, ça risque de poser problème...

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Points : 39
    Points
    39
    Par défaut
    Ok merci

    Je vais tester.

    Cependant comment on affiche les différent résultat ?

Discussions similaires

  1. probleme d'éxécution de requete SQL
    Par darkspoilt dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/05/2007, 18h37
  2. Probleme pour rediger ma requete sql
    Par JYM34 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 22/09/2006, 13h58
  3. [SQL] Probleme exploitation résultat de requete SQL
    Par ghargamaster dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/09/2006, 02h52
  4. Réponses: 26
    Dernier message: 23/06/2006, 16h45
  5. probleme lors d'une requete sql (controle non activé)
    Par junty dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 09/09/2005, 16h45

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