Consultez la formation SEO spéciale Wordpress
par WebRankInfo / Ranking Metrics

Messages: 304

Enregistré le: 5 Déc 2003

Message le Mar Mai 30, 2017 17:41

Salut,

Je bloque un peu sur une requete MySQL.

TABLE 1
id nom prenom
1 aaa bbb
2 xxx qqq
3 yyy ddd

TABLE 2
id id_table1 parametre valeur
1 1 taille 170
2 1 poids 70
3 1 cheveu blond
4 2 taille 180
5 3 cheveu brun

Je voudrai sélectionner les nom,prenom de ceux qui n'ont pas de taille définie, en l'occurrence le n°3 yyy ddd

Quelqu'un a til une idée pour m'aider ?

Merci
Haut
8 Réponses
Messages: 757

Enregistré le: 16 Mai 2010

Message le Mer Mai 31, 2017 0:30

Salut,
la structure de table 2 me semble très étrange, alors je l'ai peut-être mal comprise. Mais voici ce que je tenterais :

Code: Tout sélectionner
select Nom,Prenom from table1 t where exists(select t2.id from table2 t2 where parametre="Taille" and valeur="" and id_table1=t.id)
Haut
Messages: 304

Enregistré le: 5 Déc 2003

Message le Mer Mai 31, 2017 8:35

Salut,

je ne connaissais pas "exists", je suis en train de regarder comment ca fonctionne.

Qu'est ce qui te gène dans la table t2 ?

Sinon, ta requête ne fonctionne pas.
Il me faut retrouver les ceux de t1 où il n'y a pas d'enregistrement parametre="taille" dans t2 (et non parametre="taille" AND valeur="")
Haut
Messages: 304

Enregistré le: 5 Déc 2003

Message le Mer Mai 31, 2017 8:49

au final, en re-expliqnant ce matin, j'ai trouvé ca qui fonctionne

SELECT nom,prenom FROM t1 LEFT JOIN t2 ON t1.id=t2.id_t1 WHERE id_t1 NOT IN (SELECT id_t1 FROM t2 WHERE param='taille')

Probleme resolu

Merci
Haut
Messages: 2900

Enregistré le: 8 Avr 2011

Message le Mer Mai 31, 2017 13:20

As tu tester si cette requête n'était pas trop gourmande ? requêtes imbriquées, jointures etc. on peut parfois avoir des surprises en terme de performance.

Des fois il peut être judicieuse de réfléchir à une structure de tables différentes
Bien différencier le champ taille, poids etc. par exemple me paraîtrait plus judicieuse et aboutirait surement à une requête plus simple.

Je ne suis pas fan d'un champ "paramètre" qui peut être soit la "taille", le "poids", les "cheveux" etc.
J'ai l'impression que ça complexifie les requêtes.
Haut
Messages: 8448

Enregistré le: 14 Mai 2003

Message le Mer Mai 31, 2017 13:38

noren a écrit:Je ne suis pas fan d'un champ "paramètre" qui peut être soit la "taille", le "poids", les "cheveux" etc.

Dans un ecommerce, pr gérer les différents attributs produit c'est ce qui est le plus souvent utilisé.
Ça s'appelle g̶r̶o̶o̶t̶ un EAV: https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model

Il y a une soluce plus simple avec PostgreSQL et les champs de type hstore.
Haut
Messages: 2900

Enregistré le: 8 Avr 2011

Message le Mer Mai 31, 2017 14:13

ah ok au temps pour moi :mrgreen:
En même temps ca parait logique, vu le nombre de types d'articles différents que peut contenir une boutique et donc de paramètres différents. Ca évite également de se retrouver avec des tonnes de champs vides
Haut
Messages: 304

Enregistré le: 5 Déc 2003

Message le Mer Mai 31, 2017 14:48

Exact spout, c'est effectivement pour une eboutique que je passe avec ce système
Les caractéristiques des produits peuvent etre tres différents d'un produit à l'autre et peuvent surtout evoluer.

noren, je suis en train de voir ce que ca va donner au niveau des ressources, mais si je limite bien le nombre de résultats dans la requete et dans la sous-requete je pense que ca va passer.
Haut
Messages: 140

Enregistré le: 17 Oct 2009

Message le Jeu Juin 01, 2017 10:28

spout a écrit:Ça s'appelle g̶r̶o̶o̶t̶

:roll: :lol:
Haut

Formation recommandée sur ce thème :

Formation SEO spéciale Wordpress : apprenez à optimiser le référencement naturel d'un site fait avec Wordpress... Formation Ranking Metrics animée par un expert SEO / Wordpress.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.