Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Abfrage aufbereiten

Begonnen von patrick280, November 08, 2016, 12:37:07

⏪ vorheriges - nächstes ⏩

patrick280

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

Lachtaube

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
Grüße von der (⌒▽⌒)

patrick280

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

DF6GL

Hallo,

korrigiere:

.... ORDER BY WE)...
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

patrick280

Sorry, immer noch das gleiche Problem.

ebs17

SELECT ace.ID
...
FROM ace t

Wenn Du einen Tabellenalias einführst, musst Du ihn auch konsequent benutzen.
Mit freundlichem Glück Auf!

Eberhard

patrick280


patrick280

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?

ebs17

Wie hältst Du es denn mit Indizierung und Indexnutzung?
Siehe Grundlagen - SQL ist leicht (8) - Index

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.
Mit freundlichem Glück Auf!

Eberhard