collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 53
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13953
  • stats Beiträge insgesamt: 66362
  • stats Themen insgesamt: 8942
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: [SQL-Abfrage] Mehrmals gleiche ID, suchen nur im neusten Eintrag  (Gelesen 3609 mal)

Offline -Tom-

  • Access-Profi
  • **
  • Beiträge: 214
    • Weber-Computerhilfe - Damit Ihr Computer nicht zum Alptraum wird!
Hallo,

Ich habe eine Abfrage die zu einer MotorID mehrere Einbaudaten enthält. Um darin zu suchen verwende ich zur Zeit folgende SQL-Abfrage.
strSQL = "SELECT * FROM abf_Einbau WHERE " & sWhere

Jetzt möchte ich diese Abfrage so erweitern dass immer nur im neusten Eintrag einer MotorID gesucht wird.
Wie kann ich das machen?

Tom
Computerprobleme??? -> http//www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23320
Re: [SQL-Abfrage] Mehrmals gleiche ID, suchen nur im neusten Eintrag
« Antwort #1 am: Januar 04, 2014, 09:06:52 »
Hallo,


strSQL = "SELECT Top 1 * FROM abf_Einbau WHERE " & sWhere & " order by Vorgangsdatum desc"

Zitat
..immer nur im neusten Eintrag..
wobei in Vorgangsdatum auch die Uhrzeit enthalten sein muss.

Offline -Tom-

  • Access-Profi
  • **
  • Beiträge: 214
    • Weber-Computerhilfe - Damit Ihr Computer nicht zum Alptraum wird!
Re: [SQL-Abfrage] Mehrmals gleiche ID, suchen nur im neusten Eintrag
« Antwort #2 am: Januar 04, 2014, 09:49:02 »
Damit erhalte ich immer nur den neusten Wert der Abfrage, ich möchte aber ja von jedem Motor (MotorGrunddatenID) den neusten Wert erhalten.

wobei in Vorgangsdatum auch die Uhrzeit enthalten sein muss.

Es gibt hier aber nur das Datum, da ein Motor an einem Tag nicht mehrmals eingebaut wird.

Tom
Computerprobleme??? -> http//www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23320
Re: [SQL-Abfrage] Mehrmals gleiche ID, suchen nur im neusten Eintrag
« Antwort #3 am: Januar 04, 2014, 10:50:59 »
Hallo,

Du hast nur von EINER MotorID geschrieben. Zudem ist der Where-Condition-String und der Tabellenaufbau nicht bekannt.

Hier ein (natürlich anzupassendes!) Beispiel aus ebs77's   "SQL ist leicht"-Grundlagen.

Zitat
Beispiel: In einer Kontakttabelle soll für jeden Kunden der letzte Kontakttermin ermittelt werden. Dabei sollen aber alle Felder des Kontaktes angezeigt werden:


Code:

SELECT
    K.KundeID,
    K.Kontaktdatum,
    K.Anlass,
    K.BetreuerID
FROM
    tblKontakte AS K
        INNER JOIN
            (
                SELECT
                    KundeID,
                    Max(Kontaktdatum) AS LetzterKontakt
                FROM
                    tblKontakte
                GROUP BY
                    KundeID
            ) AS A
            ON K.KundeID = A.KundeID
                AND
            K.Kontaktdatum = A.LetzterKontakt

Offline -Tom-

  • Access-Profi
  • **
  • Beiträge: 214
    • Weber-Computerhilfe - Damit Ihr Computer nicht zum Alptraum wird!
Re: [SQL-Abfrage] Mehrmals gleiche ID, suchen nur im neusten Eintrag
« Antwort #4 am: Januar 04, 2014, 14:35:23 »
Danke, damit klappt das schonmal.
Jetzt habe ich aber noch ein Problem. Es wird mir jetzt zwar für jeden Motor der letzte Einbau geliefert, aber natürlich sollte das auch nur geliefert werden wenn der letzte Vorgang des Motors ein Einbau war.

Meine Abfrage sieht im Moment so aus:
SELECT k.Vorgang, k.Vorgangsdatum, k.VorgangsInfo, k.MotorGrunddatenID, k.Hersteller, k.SZNr, k.MotorBemerkung, k.Motortyp, k.Motornr, k.Verwendung
FROM abf_Einbau AS k INNER JOIN (SELECT abf_Einbau.MotorGrunddatenID, Max(abf_Einbau.Vorgangsdatum) AS LetzterEinbau FROM abf_Einbau GROUP BY abf_Einbau.MotorGrunddatenID)  AS a ON (k.Vorgangsdatum = a.LetzterEinbau) AND (k.MotorGrunddatenID = a.MotorGrunddatenID);

Wie muss ich die jetzt ändern?

Tom
Computerprobleme??? -> http//www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
 

Offline -Tom-

  • Access-Profi
  • **
  • Beiträge: 214
    • Weber-Computerhilfe - Damit Ihr Computer nicht zum Alptraum wird!
Re: [SQL-Abfrage] Mehrmals gleiche ID, suchen nur im neusten Eintrag
« Antwort #5 am: Januar 05, 2014, 07:27:32 »
Habe jetzt an die o.g. Abfrage so geändert:

SELECT k.Vorgang, k.Vorgangsdatum, k.VorgangsInfo, k.MotorGrunddatenID, k.Hersteller, k.SZNr, k.MotorBemerkung, k.Motortyp, k.Motornr,k.Verwendung
FROM abf_Einbau AS k INNER JOIN (SELECT abf_Einbau.MotorGrunddatenID, Max(abf_Einbau.Vorgangsdatum) AS LetzterEinbau FROM abf_Einbau GROUP BY abf_Einbau.MotorGrunddatenID)  AS a ON (k.Vorgang = a.Vorgang) AND (k.MotorGrunddatenID = a.MotorGrunddatenID) AND (k.Vorgangsdatum = a.LetzterEinbau);

Beim Aufruf kommt jetzt natürlich eine Paramterabfrage für a.Vorgang. Wenn ich dort Einbau eingebe werden mir die richtigen Ergebnisse geliefert.
Wie kann ich aber jetzt dem Parameter den Wert Einbau fest mitgeben?

k.Vorgang = "Einbau" funktioniert nicht.

Tom
Computerprobleme??? -> http//www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
 

Offline -Tom-

  • Access-Profi
  • **
  • Beiträge: 214
    • Weber-Computerhilfe - Damit Ihr Computer nicht zum Alptraum wird!
Re: [SQL-Abfrage] Mehrmals gleiche ID, suchen nur im neusten Eintrag
« Antwort #6 am: Januar 05, 2014, 10:01:54 »
Habe es hinbekommen:

SELECT k.Vorgang, k.Vorgangsdatum, k.VorgangsInfo, k.MotorGrunddatenID, k.Hersteller, k.SZNr, k.MotorBemerkung, k.Motortyp, k.Motornr, k.Verwendung
FROM abf_Einbau AS k INNER JOIN (SELECT abf_Einbau.MotorGrunddatenID, Max(abf_Einbau.Vorgangsdatum) AS LetzterEinbau FROM abf_Einbau GROUP BY abf_Einbau.MotorGrunddatenID)  AS a ON (k.Vorgangsdatum = a.LetzterEinbau) AND (k.MotorGrunddatenID = a.MotorGrunddatenID)
WHERE ((k.Vorgang)="Einbau");

Tom
Computerprobleme??? -> http//www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen