Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/03/2011, 12h45   #1
Membre du Club
 
Inscription : novembre 2007
Messages : 757
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 757
Points : 44
Points : 44
Par défaut Requête simple mais je n'y arrive pas

Bonjour à tous,
J'ai besoin de faire une petite requête qui, à mon sens, est simple, mais je n'y arrive pas
voici un petit exemple :
Table reference
Code :
1
2
3
4
5
6
7
8
9
id_article | id_attribut
10002      |  139
10002      |  141
10002      |  150
10002      |  132
10015      |  210
10015      |  214
10015      |  219
...
j'aimerais tout simplement récupérer les id_attributs du produit 10002 qui a, par exemple, 139 comme id_attribut.
Résultat attendu: 141, 150 et 132

Je saurais le faire en utilisant 2 requêtes SQL et du PHP, mais je trouve que ça ferait un peu lourd. Est-il possible de le faire en une seule requête?

Merci infiniment de votre aide
redah75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 14h34   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 995
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 995
Points : 18 253
Points : 18 253
Envoyer un message via MSN à CinePhil
C'est effectivement vraiment basique !
Citation:
j'y arrive pas
Tu as essayé quoi comme requête ?
Quel résultat as-tu obtenu ?

Ou alors je comprends mal ton besoin ?
Citation:
j'aimerais tout simplement recuperer les id_attributs du produit 10002 qui a par exemple 139 comme id_attribut
Resultat attendu: 141, 150 et 132
Pourquoi ne veux-tu pas 139 dans le résultat ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/03/2011, 15h13   #3
Membre du Club
 
Inscription : novembre 2007
Messages : 757
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 757
Points : 44
Points : 44
Me relisant, je me rends compte que je me suis trompé dans l'exemple que j'ai donné, désolé.
Alors j'explique un peu mieux.

J'ai adopté le schéma de bdd propose par JPhi33 pour mettre en place une boutique en ligne: http://www.developpez.net/forums/d92...gestion-stock/
Pour simplifier, ma table produits_references ressemble un peu à ça:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
produits:
id_produit | titre | ...
1002       |  tshirt A
 
produits_references:
id_produit | id_produit_ref | prix | ...
1002       |  10150         | 20 (tshirt A bleu M)
1002       |  10151         | 20 (tshirt A bleu S)
1002       |  10152         | 18 (tshirt A bleu XS)
1002       |  10153         | 18 (tshirt A vert M)
1002       |  10154         | 18 (tshirt A vert S)
 
produits_caracteristiques:
id_article | id_attribut
10150      |  139 (tshirt A bleu)
10150      |  145 (tshirt A taille M)
10150      |  150 (tshirt A poids 120g)
 
10151      |  139 (tshirt A bleu)
10151      |  141 (tshirt A taille S)
10151      |  151 (tshirt A poids 110g)
 
10152      |  139 (tshirt A bleu)
10152      |  149 (tshirt A taille XS)
10152      |  152 (tshirt A poids 100g)
 
10153      |  138 (tshirt A vert)
10153      |  145 (tshirt A taille M)
10153      |  150 (tshirt A poids 120g)
 
10154      |  138 (tshirt A vert)
10154      |  141(tshirt A taille S)
10154      |  151 (tshirt A poids 110g)
Voila, j'espère que c'est plus clair!

Dans la page detail_produit.php, l'utilisateur a la possibilité de choisir la couleur et la taille.
Lorsqu'on choisi la couleur, j'affiche les tailles disponibles pour cette couleur:
- bleu -> M, S, XS
- vert -> M, S

Quelle requête utiliserais-tu?
Je suis désolé, je n'ai pas la possibilité de t'envoyer ma requête car je suis en dzplacement et je n'ai pas accès a mon ordi, je suis dans un cyber

Merci infiniment
redah75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 09h15   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 995
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 995
Points : 18 253
Points : 18 253
Envoyer un message via MSN à CinePhil
Pas le temps de regarder en détail mais un rapide coup d'oeil à ton jeu de données me donne l'impression que tu as mal interprété la structure proposé et qu'il y a des choses bizarres dans tes données.

Sinon, quand tu dis ceci :
Citation:
Envoyé par redah75 Voir le message
Dans la page detail_produit.php, l'utilisateur a la possibilité de choisir la couleur et la taille.
Lorsqu'on choisi la couleur, j'affiche les tailles disponibles pour cette couleur:
- bleu -> M, S, XS
- vert -> M, S
Tu décris un processus en plusieurs étapes et il serait logique de faire plusieurs requêtes successivement en fonction du choix de l'utilisateur. Ne t'embête pas à vouloir faire ça en une seule requête, ce serait inutilement lourd.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 06h15   #5
Membre du Club
 
Inscription : novembre 2007
Messages : 757
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 757
Points : 44
Points : 44
Citation:
mais un rapide coup d'oeil à ton jeu de données me donne l'impression que tu as mal interprété la structure proposé et qu'il y a des choses bizarres dans tes données.
ah bon?? qu'est ce qui te parait bizarre??
j'ai bien evidamenent pour une raison de clarete pas tout detaille. par exemple le champ id_attribut de la table produits_caracteristiques fait reference a une table externe, mais bon, je suppose que ce n'est pas ca le probleme!!

Citation:
Tu décris un processus en plusieurs étapes et il serait logique de faire plusieurs requêtes successivement en fonction du choix de l'utilisateur. Ne t'embête pas à vouloir faire ça en une seule requête, ce serait inutilement lourd.
comment le ferait tu?? l'idee qui me traverse l'esprit est de
1- recuperer les id_produit qui sont de la couleur bleu (10150, 10151, 10152)
2- selectionner les tailles WHERE id_produit IN (10150, 10151, 10152)

as tu une meilleure idee??

En tout cas merci infiniment de ton aide
redah75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h34.


 
 
 
 
Partenaires

Hébergement Web