Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Datensätze vergleichen innerhalb einer SQL - Tabelle

Frage Entwicklung Datenbanken

Mitglied: Supergecko

Supergecko (Level 1) - Jetzt verbinden

11.12.2008, aktualisiert 20:58 Uhr, 24955 Aufrufe, 9 Kommentare

Hallo liebe Community,
Ich habe mal wieder ein Problem bei einer SQL Abfrage.

Ich habe folgenden Tabellenaufbau in Access:

ID Datum Wert1 Wert2 Name
1 20081210 5,2 4,8 Bla
2 20081211 4,7 4,5 Bla
3 20081212 4,8 4,4 Myl
4 20081213 4,4 4,2 Myl
... ... ... ... ...

Ich möchte nun überprüfen wann der Wert2 von dem Datensatz ID1 größer ist als der Wert1 von dem Datensatz ID2.
Bei diesem Beispiel soll folgendes ausgegeben werden:


ID Datum Wert1 Wert2 Name
2 20081211 4,7 4,5 Bla

Wie muss ich meine SQL Abfrage gestalten damit ich zu diesem Ergebnis komme?

Mfg,
Supergecko
Mitglied: Logan000
11.12.2008 um 14:20 Uhr
Moin Moin

Du möchtest immer nur die Datensätze ID=1 und ID=2 miteinander vergleichen?

Gruß L.
Bitte warten ..
Mitglied: Supergecko
11.12.2008 um 14:47 Uhr
Nein, die Tabelle umfasst ca. 4 Millionen Datensätze, das oben ist nur ein Beispiel,
ich will sinngemäß:

Wenn Wert2 von ID i größer als Wert1 von ID i+1
dann gebe ID i+1 aus.

// i ist Platzhalter für eine ID, und i+1 logischerweise die nachfolgende ID

Hoffe habs jetz deutlicher gemacht.
MFG Supergecko
Bitte warten ..
Mitglied: 70620
11.12.2008 um 15:09 Uhr
müsste in deinem Beispiel dann nicht Zeile 4 als Ausgabe kommen?

Dann könntest aj einfach "SELECT MAX(ID) FROM table" schreiben
Bitte warten ..
Mitglied: Supergecko
11.12.2008 um 15:31 Uhr
Nein, da Wert2 von ID 3 ja nicht größer ist als Wert1 von ID4, meine bedingung wäre nicht erfüllt
Bitte warten ..
Mitglied: 32067
11.12.2008 um 15:38 Uhr
Fehlt dir nur das Stichwort "Self Join" ?

SELECT t2.id + 1
FROM tabelle as t1, tabelle as t2
WHERE t1.id = t2.id + 1 AND t1.wert2 > t2.wert1

(So in etwa zumindest)

Bei so Joins mit so großen Tabellen sollte man aber vorher lieber mal mit einem kleineren Datenbestand entwickeln und auch genau Abfragepläne und Indices durchgehen sonst legt man den Server auch schonmal lahm ...
Bitte warten ..
Mitglied: Supergecko
11.12.2008 um 15:43 Uhr
hi DKrause,
danke für deine antwort, allerdings rede ich nur von einer tabelle,
dein Script benötigt aber 2 tabellen, t1 und t2 oder versteh ich das falsch?
Bitte warten ..
Mitglied: Supergecko
11.12.2008 um 17:35 Uhr
Hallo vielen dank für die Nachricht.

Die Idee ist nicht schlecht, allerdings haben wir zu zweit unsere Köpfe zerbrochen ob dies unser Ergebnis ergibt.
Wir haben im Test durch deinen Vorschlag ein Ergebnis erhalten, bei der die ID Konstant ist. D.h. es wird unendlichmal ein und die selbe Zeile dargestellt.



Wir haben aus unserer Tabelle mit deinem Code:

ID Datum Wert1 Wert2 Name
1 20081210 5,2 4,8 Bla
2 20081211 4,7 4,5 Bla
3 20081212 4,8 4,4 Myl
4 20081213 4,4 4,2 Myl

das hier rausbekommen:

ID Datum Wert1 Wert2 Name
2 20081210 5,2 4,8 Bla
2 20081210 5,2 4,8 Bla
2 20081210 5,2 4,8 Bla
2 20081210 5,2 4,8 Bla

Was nicht ganz dem gewünschten Ergebnis entspricht.
  • Der Kollege liest schon das neue Testament*
Bitte helft ihm...
Bitte warten ..
Mitglied: Biber
11.12.2008 um 20:58 Uhr
Moin Supergecko,
Der Kollege liest schon das neue Testament*
Bitte helft ihm...
Na ja... es entspricht mehr meiner Mentalität, ihn ein bissi schmoren zu lassen... hihihi..


01.
SELECT t2.*  
02.
FROM Werte as t1, Werte as t2 
03.
WHERE( t1.id+1  = t2.id ) AND t1.wert2 > t2.wert1 ;
Bei mir heißt die Tabelle "Werte"

Ein bisschen aussagefähiger wäre die Query so:
01.
SELECT t2.ID, t2.Datum,  t1.wert2 as Vortagswert2,  
02.
t2.wert1 as Tageswert1, t2.wert2 as Tageswert2, t2.name 
03.
FROM Werte AS t1, Werte AS t2 
04.
WHERE (t1.id+1=t2.id) And t1.wert2>t2.wert1;
Grüße
Biber
Bitte warten ..
Mitglied: Supergecko
12.01.2009 um 08:52 Uhr
Super!
Danke hat geklappt.
(Dier Rückmeldung kommt etwas spät, aber ich war bis heute im Urlaub)
Also nochmals Danke.
Bitte warten ..
Ähnliche Inhalte
Server
gelöst SQL-Tabelle portieren und dabei Daten konvertieren (1)

Frage von menace zum Thema Server ...

Entwicklung
gelöst SQL Update aus derselben Tabelle (1)

Frage von winscheil zum Thema Entwicklung ...

Datenbanken
gelöst Access 2010 SQL Tabellen Datensätze einfügen (6)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Neue Wissensbeiträge
Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
VPN Tunnel aufbauen (16)

Frage von Hajo2006 zum Thema LAN, WAN, Wireless ...

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (14)

Frage von marshall75000 zum Thema Router & Routing ...

Microsoft Office
Saubere HTML aus Word-Dokument (14)

Frage von peterpa zum Thema Microsoft Office ...

E-Mail
gelöst Probleme beim E-Mail Empfang (12)

Frage von TommyB83 zum Thema E-Mail ...