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 PHP Discussion :

Recherche dans une table mysql et comparaison [RegEx]


Sujet :

Langage PHP

  1. #21
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Table : produits : ref_site | nom_prod ...
    produit1 nomproduit1
    produit2 nomproduit2

    Table : caracteristiques : id | id_produit | carac | valeur
    1 produit1 c1 v1
    2 produit1 c2 v2
    3 produit2 c1 v1
    4 produit2 c2 v2

    J'exécute la requete suivante qui doit rechercher les produits qui ont comme carac=c1 et valeur=v1 mais aussi carac=c2 et valeur=v2 :

    SELECT p.* FROM produits p, caracteristiques ca1, caracteristiques ca2 WHERE p.ref_site = ca1.id_produit AND p.ref_site = ca2.id_produit
    AND (ca1.carac = 'c1' AND ca1.valeur = 'v1') AND (ca2.carac = 'c2' AND ca2.valeur = 'v2')
    Le résultat est bien : produit1 et produit2

  2. #22
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par hat_et_m Voir le message
    ca fonctionne merci de votre aide.
    cool,
    si tes les mêmes caractéristiques qui revienne, il faudra aussi créer une table :


    table caracteristique :
    id | caracteristique
    1 c1
    2 c2


    table valeur :
    id | id_produit | caracteristique_id | valeur
    1 produit1 1 v1
    2 produit1 2 v2
    3 produit1 1 v3

  3. #23
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par hat_et_m Voir le message
    En fait il ya un souci,

    voir plus haut
    je viens de tester il affiche bien les 2, tu dois donc avoir un soucis quelque part

  4. #24
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Pas de souci, dsl j'avais pas fait les bons enregistrements dans caracteristiques

  5. #25
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par hat_et_m Voir le message
    Pas de souci, dsl j'avais pas fait les bons enregistrements dans caracteristiques
    c'est la même que toi... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT p.* 
    FROM produits p, caracteristiques ca1, caracteristiques ca2 
    WHERE p.ref_site = ca1.id_produit AND p.ref_site = ca2.id_produit
    AND (ca1.carac = 'c1' AND ca1.valeur = 'v1') 
    AND (ca2.carac = 'c2' AND ca2.valeur = 'v2')
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    CREATE TABLE IF NOT EXISTS `caracteristiques` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `id_produit` int(11) NOT NULL,
      `carac` varchar(40) NOT NULL,
      `valeur` varchar(40) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `produit_id` (`id_produit`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
     
     
    INSERT INTO `caracteristiques` (`id`, `id_produit`, `carac`, `valeur`) VALUES
    (1, 1, 'c1', 'v1'),
    (2, 1, 'c2', 'v2'),
    (3, 2, 'c1', 'v1'),
    (4, 2, 'c2', 'v2');
     
     
    CREATE TABLE IF NOT EXISTS `produits` (
      `ref_site` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(40) NOT NULL,
      PRIMARY KEY (`ref_site`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
     
     
    INSERT INTO `produits` (`ref_site`, `name`) VALUES
    (1, 'test'),
    (2, 'truc');

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Rechercher dans une table MySql
    Par tremeur53 dans le forum Requêtes
    Réponses: 9
    Dernier message: 27/05/2007, 17h20
  2. Problème d'insertion dans une table MYSQL
    Par greg69 dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/10/2005, 11h34
  3. Nombre d'enregistrement dans une table MySQL
    Par tom06440 dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 21/10/2005, 19h07
  4. Comment importer un document CSV dans une table MySql ?
    Par magic8392 dans le forum Requêtes
    Réponses: 6
    Dernier message: 04/02/2005, 11h03
  5. recherche dans une table Access en ASP
    Par D-D dans le forum ASP
    Réponses: 3
    Dernier message: 09/06/2004, 10h12

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