2009-10-08 6 views
0

J'ai une requête qui donne un résultat comme celui-cide modifier une requête dans l'accès

field1 field2 field3 field4 field5 
23  gfhf ghjj  5  49 
23  ghf  jkll  6  45 
67  bnvn nmb  7  45 
89  gfh  hjj  8  78 
89  gfhg hk   9  23 

Voici les 2 premiers et 2 derniers enregistrements sont un peu même. Je veux seulement un champ basé sur 4 et sur le terrain 5. -à-dire quel que soit a la valeur minimale dans le champ 4 et maximum dans le champ 5.

Je veux que le résultat suivant

field1 field2 field3 field4 field5 
23  gfhf ghjj  5  49 
67  bnvn nmb  7  45 
89  gfh  hjj  8  78 

Merci

+0

Je pense que votre code souhaité indiqué est contradictoire. Pour l'ID 23, vous prenez le MAX() de Field2, mais pour ID 89, vous obtenez le MIN(). Ce n'est pas cohérent. De même pour Field3, pour l'ID 23, vous avez pris le MIN() mais pour l'ID 89, le MAX(). Si les résultats que vous présentez sont vraiment ce que vous voulez, je ne vois aucune méthode SQL pour l'obtenir, à moins qu'il y ait des données à exclure qui déterminent si vous voulez MIN() ou MAX() pour une ligne repliée donnée. –

+0

en fait je ne suis pas considéré sur le champ 2 et le champ 3 je suis seulement préoccupé par le champ 4 et 5 – tksy

Répondre

2

d'abord établir la valeur minimale pour le champ 4 et la valeur maximale pour le champ 5 que vous souhaitez associer avec le champ 1.

SELECT field1, Min(field4) AS MinField4, Max(field5) AS MaxField5 
FROM Table1 
GROUP BY field1; 

Enregistrer cette requête comme, par exemple Query1 joindre ensuite à nouveau sur Tableau 1 pour obtenir les valeurs champ2 et champ 3.

SELECT Query1.field1, Table1.field2, Table1.field3, Query1.MinField4, 
     Query1.MaxField5 
FROM Query1 INNER JOIN Table1 ON (Query1.field1 = Table1.field1) AND 
     (Query1.MinField4 = Table1.field4) AND 
     (Query1.MaxField5 = Table1.field5); 
+0

pour l'instant cela a fait le travail pour moi, merci beaucoup pour l'aide – tksy

0

Afin d'obtenir votre commande correcte, vous devrez créer une nouvelle requête qui prend l'entrée en tant que votre requête existante.

Pour le rendre plus facile d'ajuster votre requête en cours afin que le résultat sont commandés de la manière que vous voulez, avec ordre croissant field4 puis field5 descendant

Créer une nouvelle requête en sélectionnant toutes les valeurs de votre requête existante

dans le concepteur de cette nouvelle requête, cliquez droit et ajouter des totaux Select Group par pour field1 puis d'abord pour tous les autres

cela devrait faire ce que vous voulez

+0

wouldnt cela donner tous les enregistrements en les triant juste en fonction des champs 4 et 5. – tksy

+0

c'est ce que les totaux s'arrêtent. Ils choisissent la première rangée dans la requête triée pour chaque valeur de champ1 – JDunkerley

Questions connexes