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, 23027 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?

Mit freundlichen Grüßen,
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.
Mit freundlichen Grüßen 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Server
gelöst SQL-Tabelle portieren und dabei Daten konvertieren (1)

Frage von menace zum Thema Server ...

Datenbanken
Spalte in einer SQL-Tabelle auslesen. Werte durch Tab getrennt! (4)

Frage von Janekr77 zum Thema Datenbanken ...

Datenbanken
gelöst SQL . 2 Felder bzw. Werte vergleichen und Rückmeldung 0 oder 1 (2)

Frage von wawidl zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...