[sql] requete selection SQl

Résolu/Fermé
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 - 18 avril 2007 à 16:40
 karim1506 - 13 mai 2008 à 19:05
Salut a tous

je voudrais savoir comment faire pour selectionner les utilisateurs qui n'ont pas de PC
Je m'explique
dans ma table PC j'ai un champ PC
ET j'ai aussi une table Utilisateur
ma table Utilisateur est relié a la table PC

est ce qu'il y a moyen de faire une requete SQL de ce style
SELECT utiliateur FROM Utilisateur
WHERE utilisateur.utilisateur<>PC.nom
ca ca ne marche pas

9 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 856
18 avril 2007 à 17:46
Ca dépends de comment tu as construit ta base, tu nous met la requete comme ca mais on ne connais pas les champs, leur type leur nom ni à quoi ils correspondent... donc on ne peut rien répondre malheuresement :)


Est ce que ta base gere seule les clés étrangères?
Oui -> montre nous tes tables (différents champs, etc)
Non-> montre nous tes tables (idem), et il va te falloir faire une table de transition, nommée par exemple 'Utilisateur_pc' qui permet de faire le lien entre les identifiants des tables 'utilisateur' et 'pc' de manière à pouvoir établir le lien que tu souhaite.

Une fois le lien établi, pour récupérer les utilisateurs qui ont un pc :

SELECT u.nom FROM UTILISATEUR u, UTILISATEUR_PC up, PC p WHERE u.id = up.id


Pour sélectionner les utilisateurs qui n'ont pas de pc tu fais la requête SQL inverse.


3
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209
19 avril 2007 à 08:55
La il y a de l'idee mais ca ne marche pas

SELECT [Nom]
FROM Utilisateurs
WHERE NOT EXISTS (SELECT utilisateur FROM PC);
3
Déjà dans ton truc il te faut trois tables
table 1 utilisateur
table 2 pc
table 3 utilisateurAyantPc
Parce que sinon tu ne gères qu'un PC par utilisateur est vice versa

Dans ton cas maintenant avec l'identifiant utilisateur est sur la table PC pour retrouver les utilisateur sans PC
SELECT * FROM utilisateurs WHERE idUtilisateur NOT IN (SELECT idUtilisateur FROM pc)
2
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209
19 avril 2007 à 11:01
'
1

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

Posez votre question
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209
19 avril 2007 à 08:31
salut

c'est quoi la requete SQL inverse ?

je vais expliquer umpeu +
j'ai une table PC avec plein de champ qui ne sont pas important ici
il y a une cle primaire (ref PC) en numero automatique
et un champ utilisateur qui me propose avec une liste les utilisateur qui ce trouve dans ma table utilisateur

ce que je voudrais c'est l'inverse de cette requete

SELECT utilisateur FROM PC PC EST MA TABLE
la ca me selectionne tous les utilisateurs qui ont un PC
moi ce que je veut c'est l'inverse
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209
19 avril 2007 à 08:34
En fait ce que j'aimerais c'est
d'un cote selectionner tous les utilisateurs
SELECT Nom FROM Utilisateurs UTILISATEUR EST MA TABLE

puis selectionner tous les utilisateurs qui ont un PC
SELECT utilisateur FROM PC PC EST MA TABLE

puis ensuite soustraire le resultat de la deuxieme requete a la premiere requete

Si vous savez comment faire merci de m'aider
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209
19 avril 2007 à 11:41
Merci

je sais c'est le but un PC ne peut appartenir qu'a un seul utilisateur
c' est une gestion de parc informatique pour une entreprise

Voila la requete qui marche avec mes tables

SELECT [Nom]
FROM utilisateurs
WHERE Nom NOT IN (SELECT utilisateur FROM pc);

en fait je ne veut que les noms

Merci a tous le monde de mavoir aider et surtout a hotrod qui m'a donner la solution
0
abdim86 Messages postés 15 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 17 mars 2010 1
13 mai 2008 à 12:09
Aidez moi SVP,
la question imaginer un MCD pour créer des tables: et trouver la requetes en SQL qui affiche le tableau ci-dessou.


ID---------Article-----------Quatité--------Quté précédente------------------Cumul ------------Date
------------------------------------------------------------------------------------------­-------------------------------------
1 ----------A1 -------------10------------------------0 -------------------------------10----------------01/01/08
2-----------A1------------- 60----------------------10 -------------------------------70----------------03/01/08
3-----------A1--------------20----------------------70--------------------------------90--­--------------25/02/08
4-----------A1------------- 70----------------------90------------------------------160----------------30/03/08
5-----------A2--------------90---------------------- 0--------------------------------90-----------------03/03/08
6---------- A2--------------10----------------------90------------------------------100---------------­-08/03/08
7-----------A2--------------30--------------------100 -----------------------------130----------------30/04/08
8-----------A2------------- 40--------------------130------------------------------170----------------05/05/08
9-----------A3------------- 80-----------------------0--------------------------------80----------------15/05/08
..........................................................................................­............................
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .

le plus important dans ce tableau c'est comment afficher les deux colons "quantité précédente" et "cumul"
la quantité precedente N = cumul N-1;
et le cumul doit etre pour une article et pour tous les article c-à-d une fois quand on termine l'article A1 on s'arete et en commence pour article A2:

remarque : vous pouvez imaginé n'importe table, n'importe MCD:

seulement il faut afficher le tableau en SQL .
( et pas en programation que SQL)


je suis en stage : mon encadrant m'a donné cette exercice pour tester mes competence; mais vraiment j'ai pas réussi pour la trouvé; j'espere que vous trouver la solution:

repondre a mon email : "elyse-beach86@hotmail.com"
.
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 856
13 mai 2008 à 18:17
Bonjour,

1) Poste ton message dans une discussion à toi plutôt que de venir mettre ça dans une discussion résolue.
2) Je te déconseille de mettre ton adresse mail si tu ne veux pas te faire spammer, surtout que tu as créé un profil, donc mieux vaut demander qu'on te MP. De plus, il est toujours mieux de faire participer tout le monde sur le forum directement et ainsi permettre à d'autres d'avoir la solution en cas d'exercice similaire.
3) Par principe je ne viendrai pas t'aider puisqu'il s'agit d'une évaluation pour un stage. Sii on te résous ton exercice et que ton encadrant pense alors que tu as le niveau, il va certainement te donner un sujet de stage à la hauteur de ses espérances et non en fonction de ton réel niveau : compte rendu : tu vas encore plus en baver durant tons stage et tu ne progressera pas forcément.
Cela dit ça peut intéressé d'autres personnes qui viendront t'aider, auquel cas reporte toi au petit un :)

En tout cas bonne chance.
0
abdim86 Messages postés 15 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 17 mars 2010 1
13 mai 2008 à 18:26
Non , ça n'a rien avoir avec mon encadrant; parceque si mon encadrant qui m'a proposé de publié ça dans le forum commentçamarche; l'important pour lui c'est de trouver la requete parceque il meme ne sait pas la solution.

ok.
0
karim1506 > abdim86 Messages postés 15 Date d'inscription jeudi 28 février 2008 Statut Membre Dernière intervention 17 mars 2010
13 mai 2008 à 19:05
bonjour
tu dois creer une table qui va porter les champs (article qtpdt.....).
ensuite il suffit d'utiliser la requete SQL:Select champ1,champ2 from table where "la condition"
tu peut aussi consulter Google .il suffit d'ecrire requete selection SQL.
bonne chance
0