Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Abfrage zu Komplex
zurück: Wie einen Auszug von Vorwahlen mit Telefonnummern ableichen weiter: Abfrageparameter dynamisch erweitern Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Kischer
Im Profil kannst Du frei den Rang ändern


Verfasst am:
10. Jun 2008, 17:19
Rufname:

Abfrage zu Komplex - Abfrage zu Komplex

Nach oben
       Version: Office 2007

Hallo

habe ein Problem mit eine Abfrage in einer Datenbank.
die Abfrage prüft zuerst ob in Spalte 1 ein Wert vorhanden ist.
wenn ja, dann wird dieser in einer neuen spalte übernommen. wenn nicht soll der wert in spalte 2 abhängig vom datum in spalte 3 mit einem faktor multipliziert werden und statt dessen in die neue spalte geschrieben werden. Die Datumsabfrage zieht sich über ca. 20 Monate.
Habe versucht, dies in einer verschachtelten Iif-Anweisung zu realisieren. Da kam die Fehlermeldung, dass die Abfrage zu komplex sei.
Auch ein Versuch mit Switch brachte die gleiche Fehlermeldung. Weiß gerade nicht, wie ichs umsetzen soll, oder woran die Abfrage scheitert. Sind das etwa generell zu viele Abfragen?
Vielleicht habt ihr eine Idee.

hier der Abfrage-Ausschnitt.
Code:
, IIf(NOT(isnull([Spalte1].NO),
      , [Spalte1].NO
     
, IIf(D.Datum Between #5/1/1996# And #6/1/1996#
,([Spalte2]*0.66094)
, IIf(D.Datum Between #7/1/1996# And #8/1/1996#
,([Spalte2]*1.01552)
, IIf(D.Datum Between #3/1/1997# And #4/1/1997#
,([Spalte2]*0.49085)
, IIf(D.Datum Between #5/1/1997# And #6/1/1997#
,([Spalte2]*0.91997)
, IIf(D.Datum Between #8/1/1997# And #9/1/1997#
,([Spalte2]*0.66867)
, IIf(D.Datum Between #4/1/1998# And #5/1/1998#
,([Spalte2]*1.77925)
, IIf(D.Datum Between  #5/1/1998# And #6/1/1998#
,([Spalte2]*5.13744)
, IIf(D.Datum Between #6/1/1998# And #7/1/1998#
,([Spalte2]*0.81433)
, IIf(D.Datum Between #8/1/1998# And #9/1/1998#
,([Spalte2]*0.74307)
, IIf(D.Datum Between #12/1/1998# And #1/1/1999#
,([Spalte2]*0.21536)
, IIf(D.Datum Between#4/1/1999# And #5/1/1999#
,([Spalte2]*0.76155)
, IIf(D.Datum Between #5/1/1999# And #6/1/1999#
,([Spalte2]*0.92943)
, IIf(D.Datum Between #6/1/1999# And #7/1/1999#
,([Spalte2]*0.82055)
, IIf(D.Datum Between #12/1/1999# And #1/1/2000#
,([Spalte2]*0.68208)
, IIf(D.Datum Between #6/1/2000# And #7/1/2000#
,([Spalte2]*0.94112)
, IIf(D.Datum Between #7/1/2001# And #8/1/2001#
,([Spalte2]*0.8472)
, IIf(D.Datum Between #8/1/2001# And #9/1/2001#
,([Spalte2]*0.66608)
, IIf(D.Datum Between #5/1/2003# And #6/1/2003#
,([Spalte2]*0.9561)
, IIf(D.Datum Between #7/1/2005# And #8/1/2005#
,([Spalte2]*0.91986)
, IIf(D.Datum Between #8/1/2005# And #9/1/2005#
,([Spalte2]*0.68014)
, IIf(D.Datum Between #10/1/2005# And #11/1/2005#
,([Spalte2]*0.64249)
,"")
  )AS NO_vollst
MAPWARE
Access Profi(l)neurotiker


Verfasst am:
10. Jun 2008, 20:46
Rufname:
Wohnort: Hannover


AW: Abfrage zu Komplex - AW: Abfrage zu Komplex

Nach oben
       Version: Office 2007

Hi,
interessant ein funktionaler Join, mal was anderes. Und ach du liebe Güte, wozu arbeiten wir denn mit einer Datenbank?
Deine Abfrage würde auch nicht stimmen, wenn sie liefe, weil BETWEEN die oberen und unter Grenzwerte mit einschliesst und damit am 01.05.1998 einen Widerspruch erzeugt.
Erstelle eine Tabelle Faktoren mit 3 Spalten (Von, Bis, Datum) z.B.:
Code:
Von          Bis          Faktor
01.05.1996   31.05.1996   0,66094
01.07.1996   31.07.1996   1,01552
01.03.1997   31.03.1997   0,49085
Dann kann man über eine einfache Abfrage die korrespondierenden Faktoren zu den Datumswerten ermitteln und einfach weiterrechnen.
Ich habe das mal mit einer Tabelle "tblWerte" gemacht.
Code:
Wert   Datum
1   02.05.1996
2   01.07.1996
4   12.03.1997
1   01.10.2008
die Abfrage lautet dann (ohne schon zu rechnen)
Code:
SELECT Wert, Datum, Faktor
FROM   tblWerte, tblFaktoren
WHERE  Datum Between [Von] And [Bis];
elegant, oder? Das Ergebnis der Abfrage lautet:
Code:
Wert   Datum   Faktor
1   02.05.1996   0,66094
2   01.07.1996   1,01552
4   12.03.1997   0,49085
Der Trick ist, das kein Join zwischen der Wertetabelle und der Faktorentabelle gebildet wird, alleine das BETWEEN verbindet die beiden.
_________________
Grüße
Marcus

Wer Controls nicht sinnvoll benennt, wird es später bereuen.
Kischer
Im Profil kannst Du frei den Rang ändern


Verfasst am:
10. Jun 2008, 21:26
Rufname:

AW: Abfrage zu Komplex - AW: Abfrage zu Komplex

Nach oben
       Version: Office 2007

Kischer am 10. Jun 2008 um 20:50 hat folgendes geschrieben:
Okay, ich habe nun den ersten Ansatz ganz verworfen und nach einer neuen Lösung gesucht... die noch dazu um einiges "eleganter" sein dürfte. Es sei nur nochmal erwähnt - hier versucht sich ein blutiger Anfänger ;)

Und leider komme ich nicht weiter...

Es geht immernoch um eine Acces-integrierte SQL-Abfrage. Ich habe zwei Tabellen bzw. Abfragen, die ich auf dem Weg zur Lösung des Problems oben zusammen führen möchte. Mir macht derzeit das unterschiedliche Datumsformat Probleme. Beide enthalten also eine Datumsspalte. In Tabelle 1 (T1) sind dies Halbstundenwerte, d.h. pro Tag 48 Werte der Form [DD.MM.JJJJ hh:mm:ss]. Tabelle 2 (T2) enthält monatliche Mittelwerte (für den gleichen Zeitraum) in der Form 14.MM.JJ. Ich möchte eine Abfrage erstellen die mir zu jedem Halbstundenwert (aus T1) den passenden Mittelwert (aus T2) ausgibt. Der Mittelwert gilt also an jedem Tag (zu jeder Zeit) des zugehörigen Monats.

Versucht habe ich es etwa in der Art:
Code:
       IIf((Month(T1.Datum)=Month(T2.Datum)) AND Year(T1.Datum)=Year(T2.Datum), T2.Mean,"") AS Mean
Das führte aber nicht zum gewünschten Erfolg...
Es klingt so einfach, aber irgendwie ist der Wurm drin... Ich bin also für jede Hilfe dankbar!!

Grüße, Martin

Kischer am 10. Jun 2008 um 20:52 hat folgendes geschrieben:
Und dann gab es doch noch eine Antwort Smile Ich werd diese auch gleich überdenken (Danke für die Mühe), aber im Moment tendiere ich doch zum letzteren Lösungsansatz... aber erstmal genau lesen... DANKE schonmal!

Hallo Marcus.

Dein Ansatz gefällt mir sehr gut... schon erstaunlich wieviel so wenig bewirken kann. Ich hab jetzt versucht das im hinblick auf meinen zweiten Ansatz anzuwenden. Er rechnet auch, aber ich glaub es geht noch nicht ganz in die richtige richtung und access verabschiedet sich ("Dieses Recordset kann nicht aktualisiert werden" und nichts geht mehr)... ich habe im prinzip genau deinen lösungsansatz übernommen, aber erstmal ohne zugehörige "Werte". Ich habe also eine tabelle mit den spalten "von", "bis" (jeweils ein Monat, sprich z.b. von 01.01.1996 bis 31.01.1996) erzeugt mit zugehörigen Faktor (und das vollständig bis 2005). Das ist die eine Tabelle. Die andere ist eine durchgängige Zeitreihe (die beschriebenen Halbstundenwerte mit dem entsprechenden Format (siehe oben)).

Die Kombination aus beiden sah dann so aus (Ergebnis erwähnte ich ja bereits...)
Code:
SELECT D.Datum, M.faktor
FROM   [durchgängige Zeitreihe] AS D, MMW_NO AS M
WHERE  D.Datum Between #1/1/1996# And #10/31/2005#;
Bereiten die unterschiedlichen Formate das Problem? Kann ich die beiden Tabellen überhaupt auf diesem Wege zusammenführen?

Grüße,
Martin
MAPWARE
Access Profi(l)neurotiker


Verfasst am:
10. Jun 2008, 22:18
Rufname:
Wohnort: Hannover

AW: Abfrage zu Komplex - AW: Abfrage zu Komplex

Nach oben
       Version: Office 2007

Hi Martin,

wir nähern uns. Na klar machst Du das ohne die Tabelle Werte. Die heisst ja bei Dir [durchgängige Zeitreihe]. Aber die Abfrage verwirrt mich. Ich nehme mal an die Tabelle mit den Faktoren heisst: MMW_NO , der Trick ist ja gerade im BETWEEN Statement nicht konkrete Werte, sondern die Von Bis Werte der Faktorentabelle zu benutzen, die müsste also so lauten:
Code:
SELECT D.Datum, M.faktor
FROM   [durchgängige Zeitreihe] AS D, MMW_NO AS M
WHERE  D.Datum Between M.[Von] And M.[Bis]
Und ja, diese Ergebnisabfrage ist nicht aktualisierbar, Du kannst Sie also nicht als Quelle eines Formulars nutzen. Aber so wie ich das verstanden hatte musst Du das auch nicht.
_________________
Grüße
Marcus

Wer Controls nicht sinnvoll benennt, wird es später bereuen.
Kischer
Im Profil kannst Du frei den Rang ändern


Verfasst am:
10. Jun 2008, 22:36
Rufname:

AW: Abfrage zu Komplex - AW: Abfrage zu Komplex

Nach oben
       Version: Office 2007

GENIAL! Tausend Dank, dass hätte ich ohne deine Hilfe (und deine Geduld ;) ) so nie umsetzen können... DANKE!!! Very Happy
MAPWARE
Access Profi(l)neurotiker


Verfasst am:
10. Jun 2008, 22:43
Rufname:
Wohnort: Hannover


AW: Abfrage zu Komplex - AW: Abfrage zu Komplex

Nach oben
       Version: Office 2007

Razz
_________________
Grüße
Marcus

Wer Controls nicht sinnvoll benennt, wird es später bereuen.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Access Abfrage Uhrzeit (von bis) 1 new 2078 02. März 2004, 11:12
new Access Abfrage Uhrzeit (von bis)
Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten. Access Tabellen & Abfragen: Parameter Abfrage 3 shorty 2270 29. Feb 2004, 15:07
Willi Wipp Parameter Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage nach Berufssparten 3 Fabian_bkk 1537 20. Feb 2004, 10:25
Willi Wipp Abfrage nach Berufssparten
Keine neuen Beiträge Access Tabellen & Abfragen: Problem im Abfrage Generator mit Wenn() und Zwischen() 1 snowman 4094 13. Feb 2004, 10:42
Willi Wipp Problem im Abfrage Generator mit Wenn() und Zwischen()
Keine neuen Beiträge Access Tabellen & Abfragen: Wie kann ich mehr als 255Felder in eine Abfrage legen? 1 D.R. 2235 12. Feb 2004, 09:05
faßnacht(IT); Wie kann ich mehr als 255Felder in eine Abfrage legen?
Keine neuen Beiträge Access Tabellen & Abfragen: Suche Hilfe zu SQL (DAO 351 MS) - Abfrage 3 Berny_H 1005 04. Feb 2004, 11:41
borstel Suche Hilfe zu SQL (DAO 351 MS) - Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Diese Abfrage geht nicht. Kann ir jemand helfen 4 Oliver 1438 02. Feb 2004, 13:21
Willi Wipp Diese Abfrage geht nicht. Kann  ir jemand helfen
Keine neuen Beiträge Access Tabellen & Abfragen: In Abfrage nach Monat sortiert ausgeben 3 Torsten 2150 29. Jan 2004, 19:52
Torsten In Abfrage nach Monat sortiert ausgeben
Keine neuen Beiträge Access Tabellen & Abfragen: Unterscheid zwischen 2 Daten berechnen in Abfrage 2 itarus 1441 26. Jan 2004, 17:01
i_tarus Unterscheid zwischen 2 Daten berechnen in Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Verschachtelte Abfrage? 3 Fragesteller 2581 22. Jan 2004, 08:46
ffdabei Verschachtelte Abfrage?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage in Kombifeld 3 Gast 1255 06. Jan 2004, 19:21
Krokette Abfrage in Kombifeld
Keine neuen Beiträge Access Tabellen & Abfragen: kommentare im sql code einer abfrage? 1 Caladan 1744 22. Dez 2003, 20:15
Ludger kommentare im sql code einer abfrage?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: PHP JavaScript