Requete sur une même table et doublons relatifs

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Requete sur une même table et doublons relatifs

Re: Requete sur une même table et doublons relatifs

par Jenna » 22 sept. 2011, 11:45

Merci pour ta réponse

Résolu

Je vous donne le code si cela peut servir à d'autres

Code : Tout sélectionner

SELECT a.ref_article FROM ( SELECT caracteristique, valeur FROM articles_caracs WHERE ref_article = 1 ) tmp INNER JOIN articles_caracs a ON tmp.caracteristique = a.caracteristique AND tmp.valeur = a.valeur AND ref_article <> 1 GROUP BY a.ref_article HAVING COUNT(DISTINCT a.caracteristique) = ( SELECT COUNT(DISTINCT caracteristique) FROM articles_caracs WHERE ref_article = 1 )

Re: Requete sur une même table et doublons relatifs

par Mazarini » 22 sept. 2011, 11:34

Ta requete me semble bonne.

A part la condition "tab1.caracteristique = tab2.caracteristique" mise 2 fois, il ni a pas grand chose à améliorer

Tu peux faire :
SELECT tab1.ref_article, tab2.ref_article, tab1.caracteristique, tab2.caracteristique, tab1.valeur, tab2.valeur
FROM articles_caracs tab1, articles_caracs tab2
WHERE tab1.ref_article =1
AND tab1.ref_article <> tab2.ref_article
AND tab1.caracteristique = tab2.caracteristique
AND tab1.valeur = tab2.valeur
En ajoutant les conditions 1 par une pour voir ce qui se passe exactement

Requete sur une même table et doublons relatifs

par Jenna » 22 sept. 2011, 10:46

Bonjour à tous,

je me tourne vers vous pour une requête, qui me fait m'arracher les cheveux.

Je souhaiterai parcourir une seule table, afin de trouver les articles qui ont exactement les mêmes caractéristiques et valeur qu'un article donné.
Dans mon exemple suivant, je prends article 1, il doit me donner article 3 et 8

Code : Tout sélectionner

ref_article | caracteristique | valeur ---------------- 1 | couleur | rouge 1 | taille | XL 2 | couleur | bleu 3 | couleur | rouge 3 | taille | XL .... 7 | taille | XL 8 | couleur | rouge 8 | taille | XL


Ma requete (enfin la dernière) a pour le moment cette 'tête' là

Code : Tout sélectionner

SELECT tab2.ref_article FROM articles_caracs tab1, articles_caracs tab2 WHERE tab1.caracteristique = tab2.caracteristique AND tab1.valeur = tab2.valeur AND tab1.ref_article <> tab2.ref_article AND tab1.caracteristique = tab2.caracteristique AND tab1.ref_article =1
Mais bien entendu elle me donne des résultats plus que farfelus.

J'espères que certains d'entre vous pourront m'orienter.

Merci par avance de votre aide.