Aller au contenu

Requête trop compliquée pour moi....


craquoline

Sujets conseillés

Bonjour,

:( Je suis une débutante dans ce qui est requête php... je connais les trucs de base mais c'est vraiment tout... et la requête que je dois faire ne fonctionne pas comme je le souhaiterais...

Voilà je vous explique mon cas lol :

Je possède un site de vente de livres et souhaiterais établir une relation entre les recherches que m'ont adressées mes clients et les nouveaux livres que je rentre. C'est à dire voir quand une recherche correspond à un livre que je possède.

Je souhaiterais que cela fonctionne par rapport aux auteurs des livres mais également par rapport aux titres qui correspondent...

Je vais tenter de faire simple, ma base est constituée de 2 tables, une qui se nomme "livres" et dans laquelle se trouvent les livres insérés (titre, auteur "auteur_1", idlivre...) et une autre "recherche" où se trouvent les recherches (auteur, titre, idrech...)

Je souhaiterais être avertie quand un auteur correspond et qu'un ou plusieurs mots du titre de cet auteur correspond à la recherche.

Pour le moment voici la requête mysql que j'ai écrite :

SELECT distinct(recherche.idrech), recherche.auteur, recherche.titre, livres.titre, livres.statut_vente from recherche, livres where recherche.auteur=auteur_1 or substring_index(livres.auteur_1,',',1)=recherche.auteur order by statut_vente

elle me permet de voir dans mysql si j'ai des auteurs qui correspondent et ensuite je regarde si le titre de la recherche correspond avec le titre des livres que je possède... Mais c'est evidement pas très pratique....

De plus dans ma base "livres" mes auteurs sont ecrits de la sorte "Nom, Prénom" mais parfois j'ai aussi 2 auteurs séparés par un trait d'union "Nom-Nom" d'où mon "where recherche.auteur=auteur_1 or substring_index(livres.auteur_1,',',1)=recherche.auteur"

Je suis pas sur de mettre bien expliquée mais tout ça est un peu compliqué pour moi ...

Merci tout de même si vous pouvez m'aider...

Bonne journée, :)

Craquoline

Lien vers le commentaire
Partager sur d’autres sites

Merci,

J'ai essayé en changeant ma formule ainsi

SELECT distinct(recherche.idrech), recherche.auteur, recherche.titre, livres.titre, livres.statut_vente from recherche, livres where recherche.auteur like auteur_1 order by statut_vente

donc en supprimant "or substring_index(livres.auteur_1,',',1)=recherche.auteur"

En fait je soihaiterais que cette requete me trouve 1 mot de l'auteur d'un livre correspond à un auteur de la recherche...

Car parfois je peux avoir dans ma table livres "Victor, Paul Emile" ou Victor-qqchose et dans ma table recherche uniquement "Victor"

Cette requête fonctionnerait-elle?

De plus je souhaiterais la meme chose pour les titres mais quand je fais la meme chose pour les titres le resultat ne me donne que les titres exacts....

Merci,

Craquoline

Lien vers le commentaire
Partager sur d’autres sites

Il te faut un 'joker'. Tu peux élargir le champ de ta recherche, en sql, avec le sigle %%.

Tu procèdes ainsi :

SELECT champ FROM table WHERE champ LIKE '%test%'

Là, tu auras comme réponse :

'un test',

'testAutreTest',

'CeciEstUnTestBien'

Bref, ca te sert de joker, pour trouver un enregistrement, quand tu ne connais qu'une valeur approximative.

Lien vers le commentaire
Partager sur d’autres sites

Vi j'ai bien essayé cela aussi mais ca ne fonctionne pas.... peut etre à cause des 2 tables différentes..... Par exemple si je met %titre% sans precision cela me met "trop vague" et si je met %livres.titre% bien evidemment cela ne fonctionne pas non plus....

Grrrrr.... Foutu requête!!!!

Merci tout de même!!!

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...