Top-Themen

Aktuelle Themen (A bis Z)

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 SQL Query - Borland Interbase DB

Mitglied: ottscho

ottscho (Level 2) - Jetzt verbinden

30.09.2011, aktualisiert 09:28 Uhr, 4027 Aufrufe, 13 Kommentare

Morgen,

ich versuche mich an einer SQL Query und bekomme es nicht hin.
Folgendes Statement funktionert soweit:

01.
select min(AFADAT) AS MINDAT, AFNAME,  from WDAUFTRAG 
02.
group by AFNAME 
03.
order by 1 desc
Jetzt werde mir alle Datensätze von allen Jahren angezeigt, ich will aber nur die von 2011.

Wie kann ich nun eine WHERE Afrage auf die erste Spalte einbinden?
WHERE 1 <= ...
WHERE min(AFADAT) <= ...
WHERE MINDAT <= ..

Leider alles ohne Erfolg.

Jmd eine Idee?

Danke
Mitglied: Logan000
30.09.2011 um 09:41 Uhr
Moin Moin


Du willst mir nicht ernsthaft erzählen, das wenn du ein (möglicherweise) Fehlerhaftes SQL Statement absetzt du die Rückmeldung:
Leider alles ohne Erfolg.
bekommst?


So auf die schnelle (ohne Tabellen, Datentypen und Interbase genauer zu kennen) würde ich sagen...
so solte es eigendlich funktionieren:
01.
select min(AFADAT) AS MINDAT, AFNAME  from WDAUFTRAG 
02.
WHERE MINDAT <= 2011 
03.
group by AFNAME 
04.
order by 1 desc
Bitte warten ..
Mitglied: ottscho
30.09.2011 um 10:00 Uhr
ähmm, WHERE MINDAT geht nicht hatte ich ja obene im Posting geschrieben.
Das ansprechen der ersten Spalte funtkioniert eben nicht! Das schaffe ich nicht.

Unter MSSQL würde es mit dem Alias MINDAT gehen. Ich hasse Borland Interbase
Bitte warten ..
Mitglied: Logan000
30.09.2011 um 10:10 Uhr
Moin moin

Zitat von ottscho:
ähmm, WHERE MINDAT geht nicht hatte ich ja obene im Posting geschrieben.
Stimmt. Und ich hatte durchblicken lassen das ich eine fehlermeldung (z.B. syntaxfehler .. oder ähnliches) erwarten würde.
Nicht nur auf deinem Bildschim sondern auch in deinen Posts.

Das ansprechen der ersten Spalte funtkioniert eben nicht!
Warum muss es denn unbedingt die erste spate sein?
Probiers mal so:
01.
select min(AFADAT) AS MINDAT, AFNAME  from WDAUFTRAG 
02.
WHERE AFADAT <= 2011 
03.
order by 1 desc
erstmal ohne group.

Gruß L.
Bitte warten ..
Mitglied: ottscho
30.09.2011 um 10:38 Uhr
Wenn ich das GROUP weglasse, geht die min() funktion nicht mehr ;)

01.
select min(AFADAT) AS MINDAT, AFNAME from WDAUFTRAG 
02.
WHERE MINDAT <= '01.01.2011' 
03.
group by AFNAME 
04.
order by 1 desc
Fehler: Column unknown MINDAT

01.
select min(AFADAT) AS MINDAT, AFNAME from WDAUFTRAG 
02.
WHERE AFADAT <= '01.01.2011'
invalid column reference

>Warum muss es denn unbedingt die erste spate sein?
DA ja in der ersten Spalte das MIN(Datum) steht und ich das auf 2011 begrenzen möchte.
Bitte warten ..
Mitglied: Logan000
30.09.2011 um 11:54 Uhr
Moin

Zitat von ottscho:
Wenn ich das GROUP weglasse, geht die min() funktion nicht mehr ;)
Die würde ich auch erstmal links liegen lassen.

>Warum muss es denn unbedingt die erste spate sein?
DA ja in der ersten Spalte das MIN(Datum) steht und ich das auf 2011 begrenzen möchte.
Und wenn du AFADAT auf 2011 begrenzt?

01.
select AFADAT, AFNAME from WDAUFTRAG 
02.
WHERE WDAUFTRAG.AFADAT <= '01.01.2011'
bzw. mit min und Group:
01.
select min(AFADAT), AFNAME from WDAUFTRAG 
02.
WHERE WDAUFTRAG.AFADAT <= '01.01.2011' 
03.
group by AFNAME 
Wie siehts damit aus?

Gruß L.
Bitte warten ..
Mitglied: ottscho
30.09.2011 um 12:12 Uhr
Das passt das Ergebis nicht mehr:

01.
select min(AFADAT), AFNAME from WDAUFTRAG 
02.
WHERE WDAUFTRAG.AFADAT <= '01.01.2011' 
03.
group by AFNAME 
04.
order by 1 asc


Screenshot:
http://www.myimg.de/?img=screen9d917.jpg
Bitte warten ..
Mitglied: Logan000
30.09.2011 um 12:49 Uhr
Moin
Zitat von ottscho:
Das passt das Ergebis nicht mehr:
Wiso? Das Ergebnis spiegelt doch exackt das SQL Statement wieder?
Oder ist ein Datum > 1.1.2011 enthalten?

Zur Erinnerung:
Wie kann ich nun eine WHERE Afrage auf die erste Spalte einbinden?
WHERE 1 <= ...
WHERE min(AFADAT) <= ...
WHERE MINDAT <= ..

Und immerhin kein
Column unknown
oder
invalid column reference

Ich habe leider keine Ahnung ob Interbase Funktionen wie YEAR() oder BETWEEN() kennt.
Daher versuchs einfach mal so:
01.
select min(AFADAT), AFNAME from WDAUFTRAG 
02.
WHERE WDAUFTRAG.AFADAT >= '01.01.2011' AND WDAUFTRAG.AFADAT <= '31.12.2011' 
03.
group by AFNAME 
04.
order by 1 asc
Gruß L.
Bitte warten ..
Mitglied: ottscho
30.09.2011 um 12:52 Uhr
Ja, hast recht. Sorry mein Fehler
Hatte das Größerzeichen verwechselt.
Danke dir.
Bitte warten ..
Mitglied: ottscho
04.10.2011 um 12:56 Uhr
So, leider klappt es nicht wie gewünscht.
Führe ich folgendes Script aus:
01.
select min(AFADAT), AFNAME from WDAUFTRAG 
02.
WHERE WDAUFTRAG.AFADAT>= '01.01.2011' 
03.
group by AFNAME 
04.
order by 1 asc
Erhalte ich knapp 600 Datensätze. Das sind viel zu viele.

Führe ich dies aus:
01.
select min(AFADAT) AS MINDAT, AFNAME,  from WDAUFTRAG 
02.
group by AFNAME 
03.
order by 1 desc
Erhalte ich natürlich noch viel mehr. Schaue ich mir dann aber die Datensätze an, welche als Datum im Jahr 2011 liegen, so sind es nur noch 47 Stück.
Aber keine 600!
Bitte warten ..
Mitglied: Logan000
04.10.2011 um 13:26 Uhr
Moin Moin

1. Es ist nicht klug Fragen in gelösten Beiträgen zu formulieren.
2. Was dein 1. SQL Statement angeht (sehe keinen Sinn darin über das 2. zu reden)
rate ich mal, das hängt mit dem Datentyp WDAUFTRAG.AFADAT zusammen (den ich nicht kenne).
Wenn die Spalte WDAUFTRAG.AFADAT als String (varchar, char, oder was immer Interbase da noch so kennt) definiert ist, wird der Vergleich wohl Einträge wie '02.01.2000' zulassen.

Du köntest versuchen Text '01.01.2011' via Cast als Date zu konvertieren.
Etwa so:
01.
select min(AFADAT), AFNAME from WDAUFTRAG 
02.
WHERE WDAUFTRAG.AFADAT>= Cast( '01.01.2011' as date) 
03.
group by AFNAME 
04.
order by 1 asc
Falls die Spalte WDAUFTRAG.AFADAT ebenfall kein Date ist kannst du es auch mal so versuchen:
01.
select min(AFADAT), AFNAME from WDAUFTRAG 
02.
WHERE WDAUFTRAG.AFADAT>= Cast( '01.01.2011' as date) 
03.
group by AFNAME 
04.
order by 1 asc
Nebenbei: Du soltest dir dringend eine SQL Referenz von interbase besorgen.

Gruß L.
Bitte warten ..
Mitglied: ottscho
04.10.2011 um 13:58 Uhr
1. Hätte ich ein neues Thema mit dem gleichen Problem aufgemacht, hättest bestimmt das gleiche gesagt ;)
2. ok

Der Datentyp von AFADAT ist TIMESTAMP.
Das Statement mit CAST erbringt das gleiche Ergebnis.

Ich glaube über die WHERE Klausel im Bezug auf AFADAT und nicht auf MIN(AFADAT) wird das Ergebnis verfläscht.
Aber eine WHERE Klausel auf MIN(AFADAT) oder auf die Alias von MIN(AFADAT) gibt Interbase einfach nicht her.
Daher kommen wir hier so nicht weiter.

Ich danke dir für deine Hilfe.
Bitte warten ..
Mitglied: Logan000
04.10.2011 um 14:24 Uhr
Moin

1. Hätte ich ein neues Thema mit dem gleichen Problem aufgemacht, hättest bestimmt das gleiche gesagt ;)
Ja vielleicht.


Der Datentyp von AFADAT ist TIMESTAMP.
Das Statement mit CAST erbringt das gleiche Ergebnis.
Du hast das Statement dann auch auf Cast as timestamp umgeschrieben?

Ich glaube über die WHERE Klausel im Bezug auf AFADAT und nicht auf MIN(AFADAT) wird das Ergebnis verfläscht.
Das würde allen SQL Dialekten die ich kenne (auch wenn IInterbase nicht dazugehört sind es dennoch einige) wiedersprechen.
Das min() greift doch nur das kleinere bei den Datensätzen heraus wo mehere Einträge AFADAT mit identischem AFNAME existieren.
Nach dem Where wohlgemerkt.

Wenn Du recht hättest müste
01.
select AFADAT, AFNAME from WDAUFTRAG 
02.
WHERE WDAUFTRAG.AFADAT>= Cast( '01.01.2011' as timestamp) 
03.
order by 1 asc
zwar immer das ein AFADAT im richtigen Jahr anzeigen, wärend
01.
select min(AFADAT), AFNAME from WDAUFTRAG 
02.
WHERE WDAUFTRAG.AFADAT>= Cast( '01.01.2011' as timestamp) 
03.
group by AFNAME 
04.
order by 1 asc
auch ältere Einträge enthält.

Gruß L.
Bitte warten ..
Mitglied: ottscho
04.10.2011 um 15:17 Uhr
Beide Statements zeigen nur Einträge von diesem Jahr.

Meine Theorie:

Mit der Klausel
WHERE WDAUFTRAG.AFADAT>= Cast( '01.01.2011' as timestamp)
werden alle Datensätze von diesem Jahr angezeigt und dann über min(AFADAT) und group nur noch die Datensätze mit den jeweils kleinstem Datum.
Die Groupierung kann aber auch Datensätze in den vorherigen Jahren beinhalten.

Ohne die Klausel
WHERE WDAUFTRAG.AFADAT>= Cast( '01.01.2011' as timestamp)
werden alle Datensätze mit dem Mindestdatum angezeigt.

Mh, für mich so unlösbar.
Bitte warten ..
Ähnliche Inhalte
Datenbanken
SQL 2000 DB ist Fehlerverdächtig
Frage von franksigDatenbanken3 Kommentare

Hallo Ich habe einen alten SQL 2000 bei dem wohl eine DB defekt ist im Management Studio Express ist ...

Datenbanken
SQL-Query - Like Operator - Usereingabe
gelöst Frage von SchelinhoDatenbanken4 Kommentare

Hallo! Ich habe ein SQL-Script, welches als solches auf der Datenbank im SQL-Developer funktioniert. Mir geht es um eine ...

Datenbanken
Backup restore SQL Express DB
Frage von franksigDatenbanken7 Kommentare

Hallo zusammen. ich bin keine SQL leuchte und hab da mal eine frage ich möchte gerne eine SQL Express ...

Microsoft
SQL TEMP DB Disk Space
gelöst Frage von TECHGENEMicrosoft4 Kommentare

Guten Tag, auf unserem SQL Server 2008 R2 hatten wir neulich das Problem, dass die tempdb (auf eigener Disk) ...

Neue Wissensbeiträge
Windows Netzwerk
Windows Admin Center - Sagt was ihr braucht!
Tipp von Juanito vor 16 StundenWindows Netzwerk12 Kommentare

Hallo zusammen, der ein- oder andere hat sicherlich schon vom Windows Admin Center gehört. - Microsoft's neue Adminkonsole welche ...

Verschlüsselung & Zertifikate

Bitlocker-Verschlüsselung und -Monitoring ohne MBAM

Tipp von DerWoWusste vor 1 TagVerschlüsselung & Zertifikate

Der Folgende Tipp beschreibt, wie man ohne MBAM die Verschlüsselung erzwingt und monitort. MBAM ist ein Enterprise-Benefit und somit ...

Netzwerkprotokolle
IPv6 Konfiguration von Site-Site-VPN ohne feste IP
Anleitung von lcer00 vor 1 TagNetzwerkprotokolle1 Kommentar

Hallo zusammen, vor einiger Zeit hatte ich hier eine Frage zu dem Thema gepostet: Da war noch etwas offen. ...

Verschlüsselung & Zertifikate
Nutzung von Bitlocker in virtuellen Maschinen
Tipp von DerWoWusste vor 3 TagenVerschlüsselung & Zertifikate3 Kommentare

Vorbetrachtung: Wen sollte das interessieren? Wer virtuelle Maschinen zum Test auf seiner lokalen Festplatte speichert, wird diese nur selten ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Netzwerkzugriff fällt dauernd aus (win10)
gelöst Frage von fasosoLAN, WAN, Wireless29 Kommentare

Hallo, ich habe einen neuen PC zusammengebaut, der auch soweit funktioniert, bis auf, dass mein Netzwerkzugriff dauernd ausfällt. Mit ...

Viren und Trojaner
Viren zu Testzwecken gesucht
Frage von ElHuttiViren und Trojaner20 Kommentare

Hallo, Ich suche zum rumtrollen auf einem alten PC Viren, die: - Keine Komponenten beschädigen - Keine Auswirkungen auf ...

Voice over IP
Andere Rufnummer bei abgehenden Gesprächen vom All-IP-Anschluß der Telekom anzeigen
Frage von vafk18Voice over IP15 Kommentare

Ich möchte bei abgehenden Gesprächen vom All-IP-Anschluß der Telekom meine Handynummer hinterlegen, damit ich Rückrufe jederzeit empfangen kann. Derzeit ...

Monitoring
Empfehlung für Server-Monitoring gesucht
Frage von LordGurkeMonitoring14 Kommentare

Moin, wir sehen uns momentan ein wenig nach einer Alternative zu unserem jetzigen Server-Monitoring um. Getestet habe ich bisher ...