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

Requêtes MySQL Discussion :

recherche full txt


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7
    Par défaut recherche full txt
    bonsoir,

    je souhaite faire une requete sql du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from matable where MATCH(categories) AGAINST('sarl') ORDER BY rand() LIMIT 30
    ou categories est champs varchar(255) contenant plusieurs mots/catégorie

    par ex. sarl, sa, eurl, ... ou sarl|sa|eurl|... ou encore sarl,sa,eurl,...

    mais je souhaiterais exclure certaines catégories, type :

    select * from matable where MATCH(categories) N'EST PAS ('sarl') ORDER BY rand() LIMIT 30



    merci de tous vos commentaires et suggestions

  2. #2
    Membre Expert
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Par défaut
    Bonsoir,

    Ceci ne suffirait-il pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * FROM matable 
    WHERE categories NOT LIKE '%sarl%' 
    ORDER BY rand() LIMIT 30

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7
    Par défaut
    oupss... pourquoi faire simple qd on peut faire compliqué !
    c'est ça, ça marche nikel

    merci


    j'ai un autre souci :
    chaque produit est dans plusieurs catégories, il y a env. 6000 produits et une dizaine de fournisseurs.
    je n'ai pas la liste des catégories par fournisseur, je fais la requete suivante dans le but d'afficher une liste alphabétique des catégories de produits de chaque fournisseur


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $select = "SELECT categories FROM matable WHERE fournisseur=2 GROUP BY categories ORDER BY categories  ";
    $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
    while($row=mysql_fetch_assoc($result))
       {
    $cat = trim ($row["categories"]);
    $str = $cat;
    $categorie = explode(',', $str, -1);
     
    echo $categorie[0];
    echo "<br>";
     
       }
    mais, je ne suis pas sur que cela affiche toutes les catégories et par contre bcp de doublons

    je ne sais pas trop comment faire

  4. #4
    Membre Expert
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Par défaut
    Je suppose que maTable est la table produit non ? Je proposerais bien ceci pour simplifier un peu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT categories 
    FROM matable 
    WHERE fournisseur=2 
    ORDER BY categories
    Néanmoins j'ai pas trop compris le problème

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7
    Par défaut
    oui, je vais essayer d'être plus clair :

    j'ai un table produit avec

    nomproduit
    fournisseur
    categories
    ect...


    et categories est renseigné comme ça :

    aaaaa, zzzzz, ppppp, ... ou ddddd|vvvvv|fffff|... ou encore mmmmm,rrrrr,ccccc,... (selon le fournisseur)

    un produit appartient donc à plusieurs catégories

    je souhaiterais lister l'ensemble des différentes catégories de chaque fournisseur par ordre alphabétique, mais la requete ci dessous n'affiche pas TOUTES les catégories mais par contre beaucoup de doublons


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $select = "SELECT categories FROM matable WHERE fournisseur=2 GROUP BY categories ORDER BY categories  ";
    $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
    while($row=mysql_fetch_assoc($result))
       {
    $cat = trim ($row["categories"]);
    $str = $cat;
    $categorie = explode(',', $str, -1);
     
    echo $categorie[0];
    echo "<br>";
     
       }

    voila. j'espère que c'est plus clair

  6. #6
    Membre Expert
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Par défaut
    Y a-t-il une table categorie ? Qi oui que contient-elle ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7
    Par défaut
    il y a un champs categories qui contient les différentes catégories de produits de chaque fournisseur. c'est un champs varchar 255. les données sont formatées comme suit :

    pain|croissant|baguette|...
    ou
    pain,croissant,baguette,...
    ou encore
    pain, croissant, baguette,...

  8. #8
    Membre Expert
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Par défaut
    Et le résultat attendu serait comme ci-dessous ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    +-------------+
    | categories  |
    +-------------+
    | Pain        |
    | Baguette    |
    | Croissant   |
    +-------------+

  9. #9
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Par défaut
    Je pense que tu pourrais améliorer ta modélisation.

    Citation Envoyé par seb0026
    un produit appartient donc à plusieurs catégories
    Dans ce cas tu fais une table qui traduirait la relation "un produit p appartient à une catégorie c", quelque chose du genre (code non testé):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    TABLE categorieproduit (
     idProduit INT,
     idCategorie INT,
     PRIMARY KEY(idProduit, idCategorie),
     
     CONSTRAINT fk_idProduit 
      FOREIGN KEY idProduit REFERENCES produit(idProduit)
      ON DELETE NO ACTION,
     
     CONSTRAINT fk_idCategorie
      FOREIGN KEY idCategorie REFERENCES categorie(idCategorie)
      ON DELETE NO ACTION
    )
    (les contraintes sur les clefs étrangères, c'est pas forcément nécessaire.)


    Ensuite, pour chaque nouveau produit, tu remplis cette table (en faisant comme tu as fait en PHP: un explode sur le séparateur "," ou "|" et autant de requêtes "INSERT INTO categorieproduit" que nécessaire).

    Comme ça, à chaque fois que tu voudras retrouver les produits d'une catégorie précise, tu n'auras plus qu'à faire un SELECT avec des jolies jointures (code non testé):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT produit.*
    FROM produit, categorieproduit, categorie
    WHERE (categorie.nom="Baguette" OR categorie.nom="Pain")
    AND produit.idProduit = categorieproduit.idProduit
    AND categorieproduit.idCategorie = categorie.idCategorie
    GROUP BY produit.idProduit
    Et donc cela améliorera tes performances.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

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

Discussions similaires

  1. Recherche Full Text
    Par fadeninev dans le forum SQLite
    Réponses: 1
    Dernier message: 20/10/2006, 10h21
  2. [recherche FULL TEXT ]
    Par viny dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/09/2006, 17h08
  3. [MySQL] Recherche FULL TEXT IN BOOLEAN MODE et les Quotes
    Par GarGamel55 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 23/01/2006, 20h01
  4. [Info]moteur de recherche full text en environnement j2ee
    Par ddams dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 03/11/2004, 19h39
  5. Recherche FULL Text existe que dans MySql ?
    Par seb.49 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 01/06/2004, 22h30

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