[Access] Une requete qui fournit trop de resultat

Une requete qui fournit trop de resultat [Access] - SQL/NoSQL - Programmation

Marsh Posté le 11-05-2004 à 14:46:32    

Bonjour,
 
(desole pour les accents, c'est un clavier qwerty)
 
Je vous presente vite fait le probleme. Je travaille sur une table qui fait environ 22000 lignes. Dans une des colonnes, les categories socio-professionnelles des personnes de l'entreprise, ou je suis actuellement, sont representees par des nombres (au format Text). J'ai cree une requete qui devrait m'afficher la categorie 7, par exemple, ce qui donne ceci en requete sql : (le tableau s'appelle PERIOD)
SELECT PERIOD.PROFESSION
FROM employee, PERIOD
WHERE (((PERIOD.PROFESSION) Like "*7" ));
 
Quand je teste la requete, il apparait environ 100000 reponses, et la... c'est le drame. :??:  
 
Quoi qu'j'ai fait (ou pas fait d'ailleurs) qui pourrait faire apparaitre un resultat comme celui-ci ?
 
D'avance merki,
 
Lebowski

Reply

Marsh Posté le 11-05-2004 à 14:46:32   

Reply

Marsh Posté le 11-05-2004 à 15:25:16    

Essaye de rajouter DISTINCTROW après le select...
 
Sur des requêtes ou a priori il ne sert à rien, Access m'a déjà fait des coups tordus dans le genre quand je l'enlève. :pt1cable:  :kaola:  :pt1cable:  
 
Il lui arrive même de la rajouter tout seul...


---------------
Ils ne savaient pas que c'était impossible, alors ils l'ont fait.   Mark Twain
Reply

Marsh Posté le 11-05-2004 à 15:34:41    

Daron ! Ca marche.
Merki bien.

Reply

Marsh Posté le 11-05-2004 à 15:38:50    

Je pourrais te dire que je sais pourquoi mais ce serait mentir.... :non:  
 
On se fait un bowling Duc???


---------------
Ils ne savaient pas que c'était impossible, alors ils l'ont fait.   Mark Twain
Reply

Marsh Posté le 11-05-2004 à 15:39:53    

En fait, j'ai une autre question : comment faire pour effectuer une requete sur deux tables differentes ? En gros : J'ai une table avec la liste des employes et le numero qui leur correspond, et sur l'autre grace au numero nous connaissons d'autres informations (on va dire leur age pour simplifier). Comment faire pour afficher le nom, l'ID, et l'age de chacun avec une meme requete ?

Reply

Marsh Posté le 11-05-2004 à 15:50:01    

Tout le problème est là : tu as mis deux tables dans ta clause FROM sans déclarer de quelle manière elles sont liées : la requete te renvoie toutes les combinaisons possible (soit le nb employé * le nb de period.profession = 7).
 
Le distintrow marche mais surcharge inutilement la query (c'est pas propre en résumé).


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Marsh Posté le 11-05-2004 à 15:53:35    

T'as de la chance Duc, j'en ai justement une sous la main...
 
Le temps de changer les noms et la voila:

Code :
  1. SELECT DISTINCTROW
  2. employes.nom
  3. employes.id
  4. renseignements.age
  5. FROM employes, renseignements
  6. WHERE (([employes].[id]=[renseignements].[id])  AND autres conditions.....)
  7. ORDER BY [employes].[nom];


---------------
Ils ne savaient pas que c'était impossible, alors ils l'ont fait.   Mark Twain
Reply

Marsh Posté le 11-05-2004 à 15:56:55    

Ok Walter, sors ton 45 (Ta gueule Donnie)

Reply

Marsh Posté le 11-05-2004 à 15:57:06    

latruffe a écrit :

Tout le problème est là : tu as mis deux tables dans ta clause FROM sans déclarer de quelle manière elles sont liées : la requete te renvoie toutes les combinaisons possible (soit le nb employé * le nb de period.profession = 7).
 
Le distintrow marche mais surcharge inutilement la query (c'est pas propre en résumé).


 
Il m'est déjà arrivé k'ca marche pas même avec un code "propre"...
 
Je n'ai pas tilté car j'ai pensé qu'il avait oublié ca en simplifiant sa requête pour nous la donner!!!
 


---------------
Ils ne savaient pas que c'était impossible, alors ils l'ont fait.   Mark Twain
Reply

Marsh Posté le 11-05-2004 à 15:57:59    

Vous etes des anges, me voila pret a faire croire au mec derriere moi que j'ai bosse

Reply

Marsh Posté le 11-05-2004 à 15:57:59   

Reply

Marsh Posté le 11-05-2004 à 16:02:22    

J'avoue, les Base de Do c'est pas mon kif :p
Bon, j'eus pu reflechir un peu avant de balancer le code, mais la journee entiere devant l'ordi, faut pas trop trop m'en demander, sinon scouic.

Reply

Marsh Posté le 11-05-2004 à 16:24:26    

Si je balance ca dans Access :
 
SELECT DISTINCTROW  
employee.LAST_NAME,  
employee.FIRST_NAME,  
employee.ID,  
PERIOD.ID,  
PERIOD.PROFESSION
 
FROM employee, PERIOD
 
WHERE (((employee.ID) = (PERIOD.ID)));
 
 
Est-ce que cela me permettra de voir sans doublons la profession de chaque personne ? (si vous avez compris mon exemple)
 
Merki.
 
PS : Viendez bosser un peu en Roumanie, c'est le panard.

Reply

Marsh Posté le 11-05-2004 à 16:46:11    

Si employee.ID et PERIOD.ID sont les clés primaires de leurs tables respectives, ca doit passer!!! :sol:  


---------------
Ils ne savaient pas que c'était impossible, alors ils l'ont fait.   Mark Twain
Reply

Marsh Posté le 11-05-2004 à 21:13:26    

lebowski a écrit :

Si je balance ca dans Access :
 
SELECT DISTINCTROW  
employee.LAST_NAME,  
employee.FIRST_NAME,  
employee.ID,  
PERIOD.ID,  
PERIOD.PROFESSION
 
FROM employee, PERIOD
 
WHERE (((employee.ID) = (PERIOD.ID)));
 
 
Est-ce que cela me permettra de voir sans doublons la profession de chaque personne ? (si vous avez compris mon exemple)
 
Merki.
 
PS : Viendez bosser un peu en Roumanie, c'est le panard.


 
même sans DISTINCTROW

Reply

Marsh Posté le 12-05-2004 à 09:24:49    

Par rapport aux cles primaires, quand j'ouvre les tables il n'y a pas de cle primaire de definies (ne me demandez pas pourquoi). Ce sont des tables au format .dbf, peut-etre cela a-t-il un lien...

Reply

Marsh Posté le 12-05-2004 à 15:54:11    

lebowski a écrit :

Par rapport aux cles primaires, quand j'ouvre les tables il n'y a pas de cle primaire de definies (ne me demandez pas pourquoi). Ce sont des tables au format .dbf, peut-etre cela a-t-il un lien...


 
Je pense que dans ton cas, employe.id et period.id sont les clés primaire.
 
Rien ne t'empèche de les passer en clés primaires dans les propriétés de la table pour t'assurer qu'il n'y a pas de duplica.


---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed