Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: patrick280 am November 08, 2016, 12:37:07

Titel: Abfrage aufbereiten
Beitrag von: patrick280 am November 08, 2016, 12:37:07
Hallo,
folgendes Problem. Ich habe eine Tabelle mit folgenden Feldern.

ID  SN              WE               SN_OUT        WA
1   123456789   01.08.2016   987654321   03.08.2016
2   234567891   01.08.2016   198765432   05.08.2016
3   987654321   07.08.2016   987654321   09.08.2016
4   198765432   08.08.2016   123456789   11.08.2016
5   987654321   15.08.2016   987654321   20.08.2016
6   987654321   25.08.2016   234567891   29.08.2016

jetzt will ich in einer Abfrage eine neue Spalte dahinter haben (rerepair_date) in dieser Spalte soll dann das WE Datum stehen wann die SN_OUT das nächste mal rein gekommen ist. Das fertige Abfrage Ergebnis sollte dann so aussehen.

ID SN               WE               SN_OUT       WA               rerepair_date
1   123456789   01.08.2016   987654321   03.08.2016   07.08.2016
2   234567891   01.08.2016   198765432   05.08.2016   08.08.2016
3   987654321   07.08.2016   987654321   09.08.2016   15.08.2016
4   198765432   08.08.2016   123456789   11.08.2016   
5   987654321   15.08.2016   987654321   20.08.2016   25.08.2016
6   987654321   25.08.2016   234567891   29.08.2016   

Danke im Voraus
Titel: Re: Abfrage aufbereiten
Beitrag von: Lachtaube am November 08, 2016, 14:36:51
Mittels Unterabfrage, die einen skalaren Wert liefert oder mittels DMin-Funktion kann man das Ziel erreichenSELECT ...,
       (SELECT TOP 1 WE FROM Tabname
         WHERE SN = t.SN_OUT
           AND WE > t.WA
         ORDER BY 1) AS rerepair_date
  FROM Tabname t
Titel: Re: Abfrage aufbereiten
Beitrag von: patrick280 am November 08, 2016, 14:55:46
Hi, danke für die schnelle Antwort. Ich bin in SQL nicht besonders gut. Meine SQL sieht jetzt so aus und es kommt beim ausführen das ich einen Parameterwert eingeben soll.

SELECT ace.ID, ace.SN, ace.WE, ace.SN_OUT, ace.WA
(SELECT TOP 1 WE FROM ace
         WHERE SN = t.SN_OUT
           AND WE > t.WA
         ORDER BY 1) AS rerepair_date
FROM ace t
Titel: Re: Abfrage aufbereiten
Beitrag von: DF6GL am November 08, 2016, 15:01:07
Hallo,

korrigiere:

.... ORDER BY WE)...
Titel: Re: Abfrage aufbereiten
Beitrag von: patrick280 am November 08, 2016, 15:03:52
Sorry, immer noch das gleiche Problem.
Titel: Re: Abfrage aufbereiten
Beitrag von: ebs17 am November 08, 2016, 15:10:09
SELECT ace.ID
...
FROM ace t

Wenn Du einen Tabellenalias einführst, musst Du ihn auch konsequent benutzen.
Titel: Re: Abfrage aufbereiten
Beitrag von: patrick280 am November 08, 2016, 15:23:17
Danke, funktioniert!
Titel: Re: Abfrage aufbereiten
Beitrag von: patrick280 am November 11, 2016, 12:02:29
Hallo ich noch einmal,

in der Abfrage werden ca 80.000 Datensätze berechnet. das dauert sehr lange ca 25 min. kann man das irgendwie schneller machen?
Titel: Re: Abfrage aufbereiten
Beitrag von: ebs17 am November 11, 2016, 12:47:56
Wie hältst Du es denn mit Indizierung und Indexnutzung?
Siehe Grundlagen - SQL ist leicht (8) - Index (http://www.ms-office-forum.net/forum/showthread.php?t=317707)

Ansonsten hast Du durch die Formulierung der Aufgabenstellung die Struktur der Abfrage vorgegeben, da ist nichts groß zu verbessern.

Wenn man allerdings schlicht in einer Abfrage die Tabelle nach SN, WE sortieren würde, hätte man in der Folgezeile immer das Folge-WE. Jetzt müsste man sich fragen, ob der User das auch erfassen kann.