Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Abfrage soll nur jeweils ersten Datensatz liefern (Group By?
zurück: Doppelte Einträge durch Abfrage filtern weiter: Personaldatenbank Kita Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Bitte Status wählen ! Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
MichaelN
Gast


Verfasst am:
28. Dez 2004, 09:42
Rufname:

Abfrage soll nur jeweils ersten Datensatz liefern (Group By? - Abfrage soll nur jeweils ersten Datensatz liefern (Group By?

Nach oben
       

Hallo,

ich habe 2 Tabellen 'Hotels' und 'Entfernungen'
Aus der Tabelle 'Entfernungen' suche ich mitteles einer Abfrage 'Bahnhof-Entfernungen' einen Teil der Daten raus und sortiere sie nach HotelID und Entfernung:
Code:
SELECT Entfernungen.HotelID, Entfernungen.km, Entfernungen.Bezeichnung
FROM Entfernungen
WHERE (((Entfernungen.ArtID)>=2 And (Entfernungen.ArtID)<=5))
ORDER BY Entfernungen.HotelID, Entfernungen.km;

Dann habe ich eine 2. Abfrage, die zu jedem Hotel den Bahnhof mit der kürzesten Entfernung ausgeben soll:
Code:
SELECT Hotels.Name, [Bahnhof-Entfernungen Abfrage].Bezeichnung, [Bahnhof-Entfernungen Abfrage].km
FROM Hotels LEFT JOIN [Bahnhof-Entfernungen Abfrage] ON Hotels.ID = [Bahnhof-Entfernungen Abfrage].HotelID;

Das funktioniert aber nicht korrekt. Sobald für ein Hotel mehrere Bahnhöfe eingetragen sind steht das Hotel auch mehrfach in der Ausgabe. Also so:
Code:
Hotel    Bahnhof
A        X
A        Y
B        Y
C        Z
Es soll aber rauskommen:
Code:
Hotel    Bahnhof
A        X
B        Y
C        Z

Ich habe es schon versucht mit SELECT TOP 1 .... für die Bahnhofs-Abfrage, aber dann kommt nur noch ein einziger Bahnhof raus. In 'echtem' SQL würde ich es so machen:
Code:
SELECT Entfernungen.HotelID, Entfernungen.km, Entfernungen.Bezeichnung
FROM Entfernungen
WHERE (((Entfernungen.ArtID)>=2 And (Entfernungen.ArtID)<=5))
ORDER BY Entfernungen.HotelID, Entfernungen.km
GROUP BY Entfernungen.HotelID;

Aber dann erhalte ich von Access eine Fehlermeldung. Kennt Access kein Group By? Wie kann man das Problem anderweitig lösen?
Nachtrag: Gast am 28. Dez 2004 um 10:05 hat folgendes geschrieben:
Okay, ich habe inzwischen selber gemerkt, das es so nicht geht. Zum einen kommt Group BY nicht ans Ende und zum anderen löst es mein Problem nicht.

HILFE!

Das muß doch lösbar sein, oder?

Fragestellung ist 'einfach':

Ich brauche aus einer Tabelle
Code:
ID   Name   km
1    A      10
1    B      12
1    C      20
2    B      13
3    D      15
diese Ausgabe:
Code:
ID   Name   km
1    A      10
2    B      13
3    D      15

Wie geht das? Ich steh total auf dem Schlauch. Confused
Das hier klappt auf jeden Fall nicht:
Code:
SELECT DISTINCTROW Entfernungen.HotelID, Entfernungen.Bezeichnung, Min(Entfernungen.km) AS [Min  von  km]
FROM Entfernungen
GROUP BY Entfernungen.HotelID, Entfernungen.Bezeichnung;
lothi
c#, .Net


Verfasst am:
28. Dez 2004, 13:47
Rufname:
Wohnort: Birgisch

AW: Abfrage soll nur jeweils ersten Datensatz liefern (Group - AW: Abfrage soll nur jeweils ersten Datensatz liefern (Group

Nach oben
       

Hi Gast

Werd mich mal in deine Untehaltung einmischen. Very Happy

Mit der Abfrage wirst du das nie hinkriegen. Es ist das gleich wie wenn du 2 Äpfel und 3 Birnen in einen Sack einfüllst, es bleiben immer 2 Äpfel und 3 Birnen.

Du kannst nur Identische DS Gruppieren. Solange du das Feld Name mit in der Abfrage hast werden dir auch die Verschiedenen DS Angezeigt.
Nimmst du das Feld Name raus funktionierts.
Code:
SELECT Entfernungen.HotelID, Min(Entfernungen.km) AS [Min von km]
FROM Entfernungen
GROUP BY Entfernungen.HotelID

Um jetzt noch die Namen Angezeigt zubekommen wollen wir in deiner Abfrage nur die DS Angezeigt haben die die oben erwähnte Abfrage enthalten sind. Das mach uns das Schlüsselwort In.

Das sieht dann so aus:
Code:
SELECT   tblEntfernung.ID,
         Min(tblEntfernung.Entfernung) AS MinvonEntfernung,
         tblEntfernung.strName
FROM     tblEntfernung
GROUP BY tblEntfernung.ID, tblEntfernung.strName
HAVING   Min(tblEntfernung.Entfernung) In (SELECT Min(tblEntfernung.Entfernung) AS MinvonEntfernung
                                           FROM tblEntfernung
                                           GROUP BY tblEntfernung.ID);

Hab die Namen jetzt auf mein Beispiel angepasst. Aber den Rest schafst du schon. Wink

_________________
Gruss Lothi, der Bastler
Feedback ist die beste Möglichkeit mir zu sagen ob die Antwort geholfen hat!
AC2002, WinXP, Office XP
MichaelN
Gast


Verfasst am:
28. Dez 2004, 15:06
Rufname:


AW: Abfrage soll nur jeweils ersten Datensatz liefern (Group - AW: Abfrage soll nur jeweils ersten Datensatz liefern (Group

Nach oben
       

Klappt nicht ganz. Bekomme trotzdem mehrere Einträge mit der gleichen ID.

Habe es aber jetzt so hinbekommen:
Code:
SELECT   T1.ID, T1.Bezeichnung, T1.km, T1.ArtID
FROM     Entfernungen AS T1
WHERE    T1.km=(SELECT Min(km)
                FROM   Entfernungen AS T2
                WHERE  T2.ID=T1.ID
                AND   (T2.ArtID>=2 AND T2.ArtID<=5)) AND     (T1.ArtID>=2 AND T1.ArtID<=5)
ORDER BY T1.ID;

(Ist etwas komplexer als in der ursprünglichen Fragestellung)

Im Prinzip wohl der gleiche Ansatz wie bei Dir, also auf km filtern. Mit der IN-Klausel komme ich nicht klar. Aber so gehts auch.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: [DANKE-ERLEDIGT] Join in einer Abfrage 2 Gast 803 01. März 2004, 08:36
ppc [DANKE-ERLEDIGT] Join in einer Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Wie kann ich mehr als 255Felder in eine Abfrage legen? 1 D.R. 2235 12. Feb 2004, 09:05
faßnacht(IT); Wie kann ich mehr als 255Felder in eine Abfrage legen?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage verlinken 4 dfo 1326 10. Feb 2004, 22:17
Willi Wipp Abfrage verlinken
Keine neuen Beiträge Access Tabellen & Abfragen: Suche Hilfe zu SQL (DAO 351 MS) - Abfrage 3 Berny_H 1005 04. Feb 2004, 11:41
borstel Suche Hilfe zu SQL (DAO 351 MS) - Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage, die sich auf 2 Abfragen + 1 Tabelle bezieht 1 caro456 1832 27. Jan 2004, 20:03
Willi Wipp Abfrage, die sich auf 2 Abfragen + 1 Tabelle bezieht
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage von Datensätzen ohne Inhalt 3 sebwa 2053 23. Jan 2004, 23:19
Gast Abfrage von Datensätzen ohne Inhalt
Keine neuen Beiträge Access Tabellen & Abfragen: Datensatz aus tabelle löschen und andere speichern 1 itarus 1119 21. Jan 2004, 16:02
Berni99 Datensatz aus tabelle löschen und andere speichern
Keine neuen Beiträge Access Tabellen & Abfragen: Access abfrage nach 2 parametern 1 Weedy 3466 13. Jan 2004, 00:21
reke Access abfrage nach 2 parametern
Keine neuen Beiträge Access Tabellen & Abfragen: Bestimmte Abfrage erstellen ... nur wie ? 1 studi 2219 22. Dez 2003, 20:51
reke Bestimmte Abfrage erstellen ... nur wie ?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage, ob eine Abfrage ein Ergebnis hat 3 Esdo 3934 09. Dez 2003, 15:53
Fedaykin Abfrage, ob eine Abfrage ein Ergebnis hat
Keine neuen Beiträge Access Tabellen & Abfragen: Access 97 Abfrage Duplikate 9 gast 2419 02. Dez 2003, 14:39
Kay Access 97 Abfrage Duplikate
Keine neuen Beiträge Access Tabellen & Abfragen: SQL Abfrage mit VBA 3 daMike 1729 26. Nov 2003, 17:58
daMike SQL Abfrage mit VBA
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML Forum