Nous sommes actuellement le 10 Juil 2026, 07:51

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 12 message(s) ] 
Auteur Message
 Sujet du message: Requête sql via vbscript
MessagePublié: 05 Juin 2005, 20:11 
Hors-ligne
Régulier
Régulier
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 05 Juin 2005, 21:37 
Hors-ligne
Modérateur
Modérateur
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 05 Juin 2005, 21:39 
Hors-ligne
Régulier
Régulier
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 05 Juin 2005, 21:41 
Hors-ligne
Régulier
Régulier
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 05 Juin 2005, 21:44 
Hors-ligne
Modérateur
Modérateur
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 05 Juin 2005, 21:45 
Hors-ligne
Modérateur
Modérateur
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 05 Juin 2005, 21:56 
Hors-ligne
Régulier
Régulier
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 05 Juin 2005, 22:22 
Hors-ligne
Modérateur
Modérateur
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 15:10
Message(s) : 3551
Localisation : Beauport, Québec
Voilà pourquoi une clé intelligente, ça mélange les choses! :D

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 05 Juin 2005, 22:25 
Hors-ligne
Modérateur
Modérateur
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 05 Juin 2005, 22:26 
Hors-ligne
Régulier
Régulier
Avatar de l’utilisateur

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! :D


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 05 Juin 2005, 22:27 
Hors-ligne
Régulier
Régulier
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 05 Juin 2005, 22:30 
Hors-ligne
Modérateur
Modérateur
Avatar de l’utilisateur

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
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 12 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)


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

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site