WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 21.10.2004, 14:39   #1
EMB
Jr. Member
 
Registriert seit: 10.09.2004
Beiträge: 29


Standard MS Access Abfrage

Ich habe drei Entitäten (Land,Min,Kartenname) und möchte mir nun zu jedem Land nur diejenige Karte anzeigen lassen die die größte Minutenanzahl hat.

Wenn ich den Assistenten verwende komme ich aber leider wieder nur auf alle Datensätze. Die SQL Ansicht funktioniert anscheinend nicht so wie bei Oracle. Eigentlich müßte man doch nur ein distinct einfügen und nach max Kartenname sortieren oder?
EMB ist offline   Mit Zitat antworten
Alt 21.10.2004, 19:10   #2
hoshibrother
Elite
 
Registriert seit: 18.06.2001
Alter: 44
Beiträge: 1.333


Standard

probier mal im access bei der abfrage unten "maximum" oder so ähnlich. weis ich nicht mehr genau (verwende keine ms office mehr), wenn nicht such dich durch die hilfe.

wenn das nicht klappt, mach eigenes feld mit abfrage u verwende formel aus excel für maximu.
____________________________________
wissen ist macht - nichts wissen macht auch nichts
hoshibrother ist offline   Mit Zitat antworten
Alt 23.10.2004, 18:43   #3
delphirocks
bitte Mailadresse prüfen!
 
Registriert seit: 17.03.2002
Beiträge: 198


Standard

Hallo,

sollte eigentlich genauso wie bei Oracle funktionieren, nur die alte (Oracle) Join Syntax wird glaub' ich nicht unterstützt.

select a.*,b.* from
a inner join b on
a.key=b.key
where
b.kartenname =
select max(kartenname) from b

Oder so ähnlich.

Vielleicht könntest du deine Anforderung etwas genauer spezifizieren, ist etwas unklar. - Vielleicht kannst du ja auch die Oracle Abfrage posten.



ciao

dr
delphirocks ist offline   Mit Zitat antworten
Alt 25.10.2004, 12:49   #4
EMB
Jr. Member
 
Registriert seit: 10.09.2004
Beiträge: 29


Standard

SELECT DISTINCTROW Tabelle1.Land, Tabelle1.Kartenname, Max(Tabelle1.[zum Handy]) AS [Max von zum Handy]
FROM Tabelle1
GROUP BY Tabelle1.Land, Tabelle1.Kartenname;

Das ist die von Access erstellte Abfrage (mittels Assistenten gemacht). Ich möchte aber, dass nur jene (Datensätze -Kombination Länder,Kartenname) angezeigt werden, die den größten Wert in der Spalte zum Handy haben.

Müßte da nicht die max Abfrage nach group by kommen?
EMB ist offline   Mit Zitat antworten
Alt 25.10.2004, 13:55   #5
EMB
Jr. Member
 
Registriert seit: 10.09.2004
Beiträge: 29


Standard

Nähere Informationen zur Tabelle:

Tabelle1.Land = String
Tabelle1.[zum Handy] = Integer
Tabelle1.Kartenname = String

Ich möchte einfach eine Abfrage erzeugen, die mir zu jedem Land, den Datensatz mit der größten Integer in der Zelle zum Handy
anzeigt.

Untenstehede Abfrage erzeugt mir eine Reihung (gereiht nach zum Handy) schließt zeigt mir aber nicht nur den jeweils größten Datensatz an. Bräuchte es da nict ur an der richtigen stelle ein Distinct.


SELECT Max(Tabelle1.Land) AS MaxvonLand, Tabelle1.[zum Handy], Tabelle1.Kartenname
FROM Tabelle1
GROUP BY Tabelle1.[zum Handy], Tabelle1.Kartenname
ORDER BY Max(Tabelle1.Land);
EMB ist offline   Mit Zitat antworten
Alt 25.10.2004, 16:06   #6
Shadow
Master
 
Registriert seit: 19.04.2000
Beiträge: 541


Standard

Ich kenne nur einen Weg das zu lösen. Der ist zwar relativ einfach zu verstehen, man braucht aber 2 Abfragen dafür:

Abfrage1:
Code:
SELECT [Tabelle1].[Land] AS MaxLand, Max([Tabelle1].[zum Handy]) AS MaxHandy
FROM Tabelle1
GROUP BY [Tabelle1].[Land];
Hier wird nach Land gruppiert der Max-Wert von "zum Handy" aufgelistet.

Nun noch eine zweite Abfrage die das Ergebnis der Abfrage1 einfach mit der "Tabelle1" verknüpft (MaxLand -> Land , MaxHandy -> zum Handy).

Fertig.

Es würde auch mit einer Unterabfrage innerhalb der Abfrage gehen, aber das ist komplizierter zu erklären und verstehen.
Das sieht dann so aus:
Code:
SELECT *
FROM Tabelle1
WHERE (Tabelle1.[zum Handy] In (SELECT Max([Tabelle1].[zum Handy]) 
AS MaxHandy FROM Tabelle1 GROUP BY [Tabelle1].[Land] HAVING Land = Tabelle1.Land; ));
Achtung: bei mehreren gleichen Werten in "zum Handy" werden mehrere Datensätze je Land angezeigt.
Shadow ist offline   Mit Zitat antworten
Alt 25.10.2004, 22:03   #7
delphirocks
bitte Mailadresse prüfen!
 
Registriert seit: 17.03.2002
Beiträge: 198


Standard

Hallo, also ich weiss nicht ob ich dich richtig verstanden habe, aber:

select land,kartenname,max(handy) as maxhandy from tabelle
group by land,kartenname
having max(handy)=select max(handy) from tabelle1

?

Falls das nicht ist, vielleicht kannst du ja einmal ein paar Datensätze posten, die du gruppieren willst?
delphirocks ist offline   Mit Zitat antworten
Alt 26.10.2004, 21:16   #8
Bizeps
Veteran
 
Registriert seit: 15.11.2000
Beiträge: 211


Standard

Danke für eure Hilfe es funktioniert jetzt!!!!
Bizeps ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:19 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag