Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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 26/12/2011, 21h11   #1
Candidat au titre de Membre du Club
 
mouloud jean
Inscription : septembre 2010
Messages : 52
Détails du profil
Informations personnelles :
Nom : mouloud jean

Informations forums :
Inscription : septembre 2010
Messages : 52
Points : 11
Points : 11
Par défaut Requête SQL / recherche Ordinateur

Bonjour,
J'ai un problème avec une requête SQL que je dois effectuer.
Je dois créer une fonctionnalité où un élève recherche un ordinateur selon des caractéristiques minimales qu'il rentre dans des formulaire ainsi que selon une date et une heure pour savoir si l'ordinateur est libre.
La requête va donc utiliser 3 tables :

_ordinateur : nom, Salle, memoire, vitesse_DD, nb_processeur, usage, etat
_os : nom_ordi, nom_version (pour gérer les dual boot)
_emploidutemps : numSalle, Jour, Duree, HeureDeb

voici ma requête qui modélise une demande pour une mémoire de 2 Go, 2 processeurs, une vitesse_DD de 2Mhz, pour Ubuntu, pour le 1er janvier 2012 à 12h.
Elle ne marche pas, merci de bien vouloir me dire pourquoi =)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
SELECT O.nom, O.Salle
FROM ordinateur O, os S
WHERE O.memoire >= 2
AND O.nb_processeur>= 2
AND O.vitesse_disque_dur >= 2
AND O.usage = 'TP'
AND O.etat='bon'
AND S.nom_ordi=O.nom
AND nom_version='Ubuntu'
AND NOT EXISTS (SELECT *
		FROM emploidutemps E
		WHERE E.numSalle = O.Salle
		AND E.Jour = 2012-01-01
		AND E.HeureDeb <= 12
                AND E.HeureDeb+E.Duree >12)
hazaki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 09h44   #2
Membre éprouvé
 
Homme
Ingénieur développement logiciels
Inscription : avril 2009
Messages : 501
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Service public

Informations forums :
Inscription : avril 2009
Messages : 501
Points : 490
Points : 490
Pourais-tu nous dire ce que le SGDB renvoie pour que tu dises qu'elle ne fonctionne pas.

Essayes ça :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
SELECT O.nom, O.Salle
FROM ordinateur O, os S
WHERE O.memoire >= 2
AND O.nb_processeur>= 2
AND O.vitesse_disque_dur >= 2
AND O.usage = 'TP'
AND O.etat='bon'
AND S.nom_ordi=O.nom
AND nom_version='Ubuntu'
AND (SELECT *
		FROM emploidutemps E
		WHERE E.numSalle = O.Salle
		AND E.Jour = 2012-01-01
		AND E.HeureDeb <= 12
                AND E.HeureDeb+E.Duree >12) IS NULL
oneagaindoguys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 10h53   #3
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 654
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 654
Points : 2 656
Points : 2 656
Bonjour,

votre requête est syntaxiquement bonne.

Par contre au niveau du fonctionnel ... combien d'ordinateur par salle peut-il y avoir ?
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 13h49   #4
Candidat au titre de Membre du Club
 
mouloud jean
Inscription : septembre 2010
Messages : 52
Détails du profil
Informations personnelles :
Nom : mouloud jean

Informations forums :
Inscription : septembre 2010
Messages : 52
Points : 11
Points : 11
Bonjour,
merci pour l'aide, le problème vient de l'emploi du temps, j'ai créé 5 ordinateurs dont 4 qui ne doivent pas être envoyé par le requête pour des raisons différentes :os, emploi du temps, caractéristiques minimales.
Cepedant 2 sont renvoyé, celui qui doit l'être ainsi que celui qui est dans une salle occupé par l'emploi du temps. Je ne vois pas d'où vient le problème
hazaki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 14h26   #5
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 654
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 654
Points : 2 656
Points : 2 656
Bein, prenez les conditions de la sous-requête et confrontez les à vos données.

Le problème vient de là.
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 14h31   #6
Candidat au titre de Membre du Club
 
mouloud jean
Inscription : septembre 2010
Messages : 52
Détails du profil
Informations personnelles :
Nom : mouloud jean

Informations forums :
Inscription : septembre 2010
Messages : 52
Points : 11
Points : 11
La sous-requête ne renvoie rien, alors qu'elle devrait renvoyer l'ordi qui est occupé ce jour à cette heure...
hazaki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 14h33   #7
Candidat au titre de Membre du Club
 
mouloud jean
Inscription : septembre 2010
Messages : 52
Détails du profil
Informations personnelles :
Nom : mouloud jean

Informations forums :
Inscription : septembre 2010
Messages : 52
Points : 11
Points : 11
Ok, le probème venait du fait que j'ai pas mis la date entre quote...
Merci pour l'aide
hazaki est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web