Requête SQL que je n'arrive pas à faire

Résolu/Fermé
Marie - 7 janv. 2008 à 18:55
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 - 10 janv. 2008 à 21:35
Bonjour à tous!

Je vous explique mon soucis.

Je programme un site dynamique de vente pour un projet à l'iut.

Ainsi, je possede 9 tables de vêtements :

pantalon homme, pantalon femme, pantalon enfant
teeshirt homme, teeshirt femme, teeshirt enfant
pull homme, pull femme, tee shirt enfant

Ces tables comportent, entre autre, des colonnes comprenant : une répérence (du type "phb001") mais aussi un prix.

Une personne qui commande remplira des champs avec son nom, son prenom, son adresse mais aussi, le code du produits qu'il désire commander. Ces champs s'enregistrent alors dans une table 'commande'

Ainsi, lorsque j'affiche la page de validation à la personne qui commande, j'affiche les codes qui sont enregistrés dans la table commande. Je cherche ensuite à afficher le prix correspondant.

Pour cela, je dois faire une recherche, dans les 9 tables de vêtements, quel est le prix correspondant au code "phb001".

Et j'ai du mal à réaliser cette requette. Il y aurait des centaines de milliers de conditions à mettre dans le WHERE.

Il y a sûrement une finesse SQL que je ne connais pas!

Je vous remercie d'avance pour votre aide.

6 réponses

Petite précision :
La page de validation est de ce type :

______________________________

Vous avez commandé les articles :

phb001
pha002
______________________________


> Ces deux informations sont récupérées dans la table commande, où elles sont stockées avec les informations personnelles du client.
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
7 janv. 2008 à 23:17
Salut,

La structure DB me fait peur... c'est clair qu'il doit y avoir beaucoup de différences entre un pantalon homme, femme et enfant... l'un a trois jambes, l'autre un et demi et le dernier quatre ? Trêve de plaisanteries (mais avec un peu de bon sens on pouvait quand même regrouper certains articles en les ditinguant par un type (H, F, E par exemple) ce qui aurait facilité les requêtes, mais on n'est pas là pour juger de la structure ils avaient sûrement une bonne raison) ^^

Il y aurait quelques préconditions pour réaliser ta requête... justement du fait que les articles soient éparpillés à gauche et à droite, il faut impérativement dans ta table de commande que le champ qui fait référence vers le numéro de l'article fasse également référence vers le nom de la table qui la contient, ça c'est inévitable sinon inutile d'aller plus loin. Exemple pour référencer l'article "ph001" de la table "pantalons homme" : "PH_ph001" où ce qui est avant le "_" représente le nom de la table par exemple... enfin sur la syntaxe tu as l'embarras du choix.

Ensuite heu... je ne connais pas de solution miracle. Si tu parles de "pages" je suppose que tu utilises un langage de programmation derrière, donc par facilités pour chaque référence dans la table "commandes" j'extrairais la chaine dans la colonne de référence au produit... dans un premier temps je récupèrerais le nom de la table sur laquelle la requête doit être exécutée et ensuite la requête normale pour obtenir le prix.

Donc pour mon exemple précédent :

table = sous_chaine("PH_ph001", 0,2)
// Là tu aurais une table de correspondances entre le code à 2 chiffres et le nom complet de ta table.
select prix from nom_de_la_table_obtenue where code = "ph001" // l'autre partie du code


Voilà comment je vois les choses, en espérant t'avoir donné quelques lumières.
0
Il m'est apparu clairement, en y reflechissant, que mes nombreuses tables étaient totalement inutiles. Et que l'avantage d'une base de données, c'est justement de pouvoir regrouper tout en caractérisant pour mieux différencier.

Aussi, j'ai simplifié en créant une simple table : vetement qui contient les attributs "sexe" et "homme". La solution était tellement évidente qu'elle m'a aveuglée!

Merci beaucoup!

Marie
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
9 janv. 2008 à 22:35
Content d'avoir pu t'aider Marie :-) (et désolé pour le surplus d'ironie mais c'était juste pour que la structure te choque dans un premier temps, tu as compris le message bien mieux que je ne l'ai fait passer ;-) )

Et au fait... si le magasin pour lequel tu fais le site voulait bien lancer des articles homme en taille enfant ce serait cool :D Je ressens de la discrimination à chaque fois que je passe dans le rayon homme, je peux pratiquement zapper les 99% tellement ils ne pensent pas que certains hommes sont plus petits que la taille Small... déprimant :-( Comment on peut continuer à dire que les petits sont mignons si la mode ne leur permet pas de l'être... Oui voilà, il faut crier haut et fort ! Je prendrai le temps qu'il faudra pour construire une grande échelle et je... dominerai le monde ! (arf, je crois qu'on n'est pas dans le bon dessin animé).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
D'ailleurs je me suis trompée dans mon dernier post, j'ai créé les attributs "sexe" et "type", pas "sexe" et "homme"(...).

Va falloir que j'arrête de bosser après minuit moi!

Si tu cherche des vêtement taille enfant dans les articles homme, pourquoi ne vas tu pas directement au rayon enfant?!

Ils font de très jolis pull plein de couleurs et de motifs rigolos! :D
0
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
10 janv. 2008 à 21:35
"j'ai créé les attributs "sexe" et "type", pas "sexe" et "homme"(...)."

Franchement je n'avais même pas remarqué la confusion, je lisais réellement "type" dans ma tête mais c'est bien de le préciser pour le suivant qui passera. :-)

Pas bien de se moquer :p Après les cravattes Donald, les costars arc-en-ciel ? Non mais sans blague, avant dans les rayons enfants on trouvait encore des vêtements classiques (mais version enfant toujours)... plus le temps passe moins on en voit. Les enfants vont aux grands événements en basket, jean,... du coup ils ne font plus rien de classique. Donc voilà pourquoi il faut impérativement que les rayons hommes proposent leurs mêmes articles en taille XXXS (tant en largeur qu'en longueur :D).
0