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 :

se passer des VUES [MySQL-5.1]


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Par défaut se passer des VUES
    Bonjour,

    ma table articles contient les champs suivant:
    ID, designation, texte, id_langue, date, validation[boolean].

    chaque article contient le texte d'une des pages de mon site.
    j'ai plusieurs versions de chaque page donc la date varie a chaque fois.
    chaque page est également validée ou pas(validation).

    Je suis en train de faire un moteur de recherche simple pour mon site.

    Donc je veut rechercher un mot dans le texte de toutes les pages qui sont valide(validation) et dans leur derniere version(date) et sortir la liste de ces pages(designation).

    Pour cela j'avais fait ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /* liste des dernier articles valides */
    CREATE OR REPLACE VIEW articles_valides AS
     (SELECT ID, designation, id_langue, texte, max(`date`) AS `date` FROM articles WHERE validation > 0 GROUP BY designation) 
     
    /* recherche parmi ces articles */
    SELECT designation FROM articles_valides WHERE texte REGEXP :mot
    ça marchait en local mais je viens de me rendre compte que mon hebergeur ne permet pas l'utilisation des VUES

    je ne suis pas très doué en mysql mais je pense qu'il est possible d'arriver au meme resultat sans passer par une VUE.

    Est que quelqu'un peut m'aider ?

    Merci

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 12
    Par défaut
    Bonjour,

    Ta vue, n'est qu'une requête enregistrée.

    donc la requête que tu dois utiliser pour te passer de vue est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT designation FROM articles WHERE validation > 0 AND  texte REGEXP :mot GROUP BY designation
    La tu ne récupère que la designation mais d'après ton exemple c'est ce que tu voulais obtenir.


  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Par défaut
    merci pour la tentative mais il me manque encore un filtrage dans ta requete: max(`date`) AS `date`

    chaque article est conservé a chaque modification, un nouvel article avec la meme designation est ajouté avec une date plus récente.
    Je ne veux chercher que dans les dernières versions de chaque article, a conditions que ces articles soit marqués valide.

    je pense qui faut obligatoirement 2 select et utiliser des parenthèses mais je ne voit pas comment tourner ça.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Par défaut
    J'ai pensé qu'en rajoutant le max('date) dans ta requete ça pourrai passer et en faisant des essais je me suis rendu compte que non.
    Avec ça il peut trouver le texte dans un ancien article et ne me donner que la designation me faisant croire que le texte se trouve dans la dernière version de l'article alors que ce n'est pas forcement le cas.

    Il faut obligatoirement dans un 1er temps faire le tri pour récuperer les derniers articles valide et ensuite faire la recherche dans le texte de ces articles et récupérer la designation ou bien l'ID.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 175
    Par défaut
    bon finalement c'était bien ce que je pensais, il suffisait d'inclure la 1ère requête dans la deuxième en utilisant des parenthèses.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT designation
    	FROM (
    		SELECT ID, designation, id_langue, texte, max(`date`) AS `date`
    		FROM articles
    		WHERE validation >0
    		GROUP BY designation
    	) AS articles_valides 			 
    WHERE texte REGEXP :mot

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    vous pensez mal. le text retourné par cette requete est aléatoire pour une meme designation.

    il manque une jointure entre cette sous requete et cette meme table avec comme clause de jointure la désignation et la date max

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

Discussions similaires

  1. Passer des variables a la vue
    Par thebarbarius dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2011, 09h13
  2. [ZF 1.10] Passer des variable de vue dans init()
    Par MaitrePylos dans le forum MVC
    Réponses: 4
    Dernier message: 23/07/2010, 08h53
  3. Problèmes avec des vues
    Par dady dans le forum MFC
    Réponses: 22
    Dernier message: 09/01/2004, 16h26
  4. [CR7][VB6] Passer des infos de Vb vers CR
    Par tripper.dim dans le forum SDK
    Réponses: 2
    Dernier message: 13/11/2003, 13h30
  5. [Crystal Report] Utilisation des vues de sql serveur
    Par Olivierakadev dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 15/11/2002, 17h44

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