| |
Consulter les messages sans réponse | Consulter les sujets actifs
|
Page 1 sur 1
|
[ 12 message(s) ] |
|
| Auteur |
Message |
|
DolGuldur
|
Publié: 05 Juin 2005, 20:11 |
|
Inscription : 14 Mars 2002, 13:44 Message(s) : 436
|
|
Bon, je vais essayer d'être le plus clair possible.
J'ai une table Jeux avec la liste des numéros de jeux. J'ai une table réservations ou le numéro de jeux va s'inscrire lorsqu'il y a réservation. Je peux avoir 3 jeux identiques avec des noms différents mais ayant toujours les mêmes premiers caractères, i.e., le jeu A0003, A0003-1, A0003-2.
Je veux être capable de trouver avec une requête sql quels jeux sont disponibles si, i.e., le A0003-1 est sorti. Je devrait avoir comme résultat le A0003 et le A0003-2. Je gosse comme un con et je n'ai pas encore la solution. Alors si quelqu'un peut me guider vers la bonne requête, ça serait apprécié!!
Merci d'avance!
|
|
| Haut |
|
 |
|
Procyon
|
Publié: 05 Juin 2005, 21:37 |
|
Inscription : 07 Jan 2002, 15:10 Message(s) : 3551 Localisation : Beauport, Québec
|
|
Ça sent ce qu'on appelle une clé intelligente, ce qui n'est jamais une bonne idée.
Anyway, c'est quoi qui t'indique que ton jeu est sorti? Un champ? De quel type est ce champ? C'est quoi la condition qui te dit qu'un jeu est sorti?
_________________ Procyon,
Modérateur de la section Trouvailles
|
|
| Haut |
|
 |
|
DolGuldur
|
Publié: 05 Juin 2005, 21:39 |
|
Inscription : 14 Mars 2002, 13:44 Message(s) : 436
|
|
Salut Procyon, je ne sais pas c'est quoi une clé intelligente... Pourquoi ce n'est pas une bonne idée de l'utiliser, et qu'est-ce que je pourrais faire pour contourner ce problème??
|
|
| Haut |
|
 |
|
DolGuldur
|
Publié: 05 Juin 2005, 21:41 |
|
Inscription : 14 Mars 2002, 13:44 Message(s) : 436
|
|
Salut, c'est un champ numérique dans lequel je met la valeur 1 lorsque le jeu est sorti, et 0 lorsqu'il ne l'est plus.
|
|
| Haut |
|
 |
|
Procyon
|
Publié: 05 Juin 2005, 21:44 |
|
Inscription : 07 Jan 2002, 15:10 Message(s) : 3551 Localisation : Beauport, Québec
|
DolGuldur a écrit: Salut Procyon, je ne sais pas c'est quoi une clé intelligente... Pourquoi ce n'est pas une bonne idée de l'utiliser, et qu'est-ce que je pourrais faire pour contourner ce problème??
Une clé, c'est ce qui défini chaque enregistrement de façon unique et ça ne devrait servir qu'à ça. Une clé intelligente, c'est une clé qui rend unique chaque enregistrement à laquelle on a ajouté une particularité qui fait que la clé peut donner une ou plusieurs informations supplémentaires.
Ce n'est pas une bonne idée parce que ça rend les données et les requêtes pour y accéder compliqué pour rien et de plus, ça rend presque impossible la normalisation de la base de données pour la rendre la plus efficace possible.
Pour qu'on puisse t'aider, il nous faudrait savoir comment est designé ta base de données. Quelles sont tes tables pricipales et les champs principaux qu'elles contiennent?
_________________ Procyon,
Modérateur de la section Trouvailles
|
|
| Haut |
|
 |
|
Procyon
|
Publié: 05 Juin 2005, 21:45 |
|
Inscription : 07 Jan 2002, 15:10 Message(s) : 3551 Localisation : Beauport, Québec
|
DolGuldur a écrit: Salut, c'est un champ numérique dans lequel je met la valeur 1 lorsque le jeu est sorti, et 0 lorsqu'il ne l'est plus.
Ok, d'abord si ta table s'appelle "Jeux" par exemple et que ton champ numérique s'appelle "Sorti", ta requête devrait ressembler à Code : SELECT * FROM Jeux WHERE Sorti <> 1
_________________ Procyon,
Modérateur de la section Trouvailles
|
|
| Haut |
|
 |
|
DolGuldur
|
Publié: 05 Juin 2005, 21:56 |
|
Inscription : 14 Mars 2002, 13:44 Message(s) : 436
|
|
Je vais expliquer un peu plus à fond:
J'ai une page avec un listing de jeux, j'affiche seulement 1 jeu de chaque, alors si j'ai un jeu A0001 et A0001-1, je n'affiche seulement le jeu A0001.
Quand je cliques sur ce jeu, j'arrive à la page qui me décrit le jeu en question et qui me dit combien d'exemplaires de ce jeu sont disponibles, donc, dans ce cas, on dirait 2. Je continue, j'en réserve 1 et je quitte.
Une autre personne vient après moi sur le site, elle va voir le détail du jeu A0001 et elle voit qu'il en reste un de disponible...
Cette partie ça va bien, je fais mon SELECT * from Reserv where NoJeu Like 'A0001%' AND SORTIT = 1
Là où le fun commence c'est quand la personne clique pour réserver le jeu, il faut que ce soit le numéro du prochain exemplaire disponible qui sort et non le A0001... Suis-je clair moi là??? C'est mêlant un peu mon affaire...
Donc, faut que je fasse une requête qui va vérifier le # du jeu de ma table Jeux contre la table Reserv, si le numéro est trouvé et que sorti est = 1 il faut que je passe à l'exemplaire suivant dans la table Jeux et ainsi de suite jusqu'à ce que je trouve le # de l'exemplaire qui est disponible, s'il ne sont pas tous sortis évidemment
T'as une idée?
|
|
| Haut |
|
 |
|
Procyon
|
Publié: 05 Juin 2005, 22:22 |
|
Inscription : 07 Jan 2002, 15:10 Message(s) : 3551 Localisation : Beauport, Québec
|
Voilà pourquoi une clé intelligente, ça mélange les choses!
Si tu avais plutôt une structure comme ceci:
Code : ---------------- -------------------- |Jeux | |Exemplaires | |----------------| |--------------------| |jeu_id | |exe_id | |jeu_titre | |exe_sorti | |jeu_description | |exe_dt_retour_prevu | |jeu_dt_parution | |fk_jeu_id | |jeu_cote | |exe_no_serie | ---------------- --------------------
Tu as par exemple Icewind Dale comme jeu et tu l'a en 4 exemplaires. Dans la table Jeux, tu as un seul enregistrement pour Icewind Dale qui compile tous les renseignements sur le jeu lui-même. Dans la table Exemplaires, tu as 4 enregistrements qui contiennent la même valeur dans "fk_jeu_id" qui est égal au champ "jeu_id" dans la table Jeux pour l'enregistrement qui contient Icewind Dale. Dans le champs "exe_no_serie", à chaque exemplaire ce chiffre augmente de 1, ce qui, avec fk_jeu_id détermine l'unicité de chaque enregistrement. Alors tu aurais par exemple ceci dans tes tables: Code : >SELECT * FROM Jeux jeu_id jeu_titre jeu_type jeu_dt_parution jeu_cote ------ ------------- ----------- --------------- -------- 1 Icewind Dale Jeu de rôle 2002-08-10 7.6 2 Baldur's Gate Jeu de rôle 2001-10-02 7.9 3 Doom III FPS 2004-04-06 8.5 >SELECT * FROM Exemplaires exe_id exe_sorti exe_dt_retour_prevu exe_no_serie fk_jeu_id fk_loc_id ------ --------- ------------------- ------------ --------- --------- 1 1 2005-06-09 1 1 5 2 1 2005-06-11 2 1 8 3 0 3 1 4 0 4 1 5 1 2005-06-11 1 3 8 6 0 2 3
Avec ça, tu pourrais savoir combien il te reste d'exemplaires en main de Icewind Dale avec "SELECT COUNT(*) FROM Exemplaires WHERE fk_jeu_id = 1 AND exe_sorti <> 1" et si tu veux le prochain numéro de série disponible, tu peux faire "SELECT MIN(exe_no_serie) FROM Exemplaires WHERE fk_jeu_id = 1 AND exe_sorti <> 1" et ainsi de suite.
_________________ Procyon,
Modérateur de la section Trouvailles
|
|
| Haut |
|
 |
|
Procyon
|
Publié: 05 Juin 2005, 22:25 |
|
Inscription : 07 Jan 2002, 15:10 Message(s) : 3551 Localisation : Beauport, Québec
|
|
Pour ce que tu as, tu peux faire "SELECT RIGHT(MIN(NoJeu), 1) WHERE NoJeu Like 'A0001%' AND SORTIT = 1"
Quelle base de données utilises-tu? Je ne suis pas certain que RIGHT va fonctionner partout, mais ça devrait être relativement standard.
_________________ Procyon,
Modérateur de la section Trouvailles
|
|
| Haut |
|
 |
|
DolGuldur
|
Publié: 05 Juin 2005, 22:26 |
|
Inscription : 14 Mars 2002, 13:44 Message(s) : 436
|
COOL! C'est vrai que ça facilite les choses en maudit!!!
Je vais changer ma structure et ça devrait régler tous mes problèmes!
Un gros merci! 
|
|
| Haut |
|
 |
|
DolGuldur
|
Publié: 05 Juin 2005, 22:27 |
|
Inscription : 14 Mars 2002, 13:44 Message(s) : 436
|
Procyon a écrit: Pour ce que tu as, tu peux faire "SELECT RIGHT(MIN(NoJeu), 1) WHERE NoJeu Like 'A0001%' AND SORTIT = 1"
Quelle base de données utilises-tu? Je ne suis pas certain que RIGHT va fonctionner partout, mais ça devrait être relativement standard.
J'utilises MS Access pour ce projet
|
|
| Haut |
|
 |
|
Procyon
|
Publié: 05 Juin 2005, 22:30 |
|
Inscription : 07 Jan 2002, 15:10 Message(s) : 3551 Localisation : Beauport, Québec
|
DolGuldur a écrit: J'utilises MS Access pour ce projet
Alors ce que je t'ai dit fonctionnera.
_________________ Procyon,
Modérateur de la section Trouvailles
|
|
| Haut |
|
 |
|
Page 1 sur 1
|
[ 12 message(s) ] |
|
Qui est en ligne ? |
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité |
|
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum
|
|
|
|