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

SQL Query - Borland Interbase DB

Frage Entwicklung Datenbanken

Mitglied: ottscho

ottscho (Level 2) - Jetzt verbinden

30.09.2011, aktualisiert 09:28 Uhr, 3930 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

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

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

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

Frage von MegaGiga zum Thema Hardware ...