tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
860
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Jo_S Jo_S ist offline Grünschnabel
    Registriert seit
    May 2005
    Beiträge
    2
    Hallo,

    um Nachfragen vorzubeugen, ich kenne die Suchfunktion und habe auch schon einiges
    herausbekommen, doch ich brauche Hilfe.

    Ich habe eine Tabelle (MAGRP_HISTORIE) u. a.mit den Einträgen "MANR_F,GUELTIG_AB,h.MONATSPLANTEILNR_F".

    In "MANR_F" ist die Mitarbeiternummer
    In "GUELTIG_AB" das Datum als Zahl (z.B. 5560 für Heute)
    In "MONATSPLANTEILNR_F" die Mitarbeitergruppe ( 1 bis 130)



    Nun versuche ich eine Abfrage zu erstellen, die mir alle Mitarbeiter (MANR_F) ausgibt, die aktuell in der ,z.B. Mitarbeitergruppe Nr. 30, sind, also das höchste Datum (GUELTIG_AB) in (MONATSPLANTEILNR_F).

    Ich habe dies vollbracht:

    select h.MANR_F,MAX(h.GUELTIG_AB),h.MONATSPLANTEILNR_F
    from MAGRP_HISTORIE h
    Group By h.MANR_F,h.MONATSPLANTEILNR_F
    having MAX(h.GUELTIG_AB) <= ? (wird von vb6 als Variable übergeben- aktueller TAG)
    and h.MONATSPLANTEILNR_F =? (wird von vb6 als Variable übergeben)

    ORDER BY h.MONATSPLANTEILNR_F


    Nun bekomme ich natürlich immer nur das größte Datum in der Gewählten Gruppe, aber nicht das größte, das es für den Mitarbeiter gibt.

    Da ich eine Auswertung nach (Mitarbeiter)-Gruppen mache (muß), kommt es nun vor, dass ein Mitarbeiter doppelt Geld bekommt, wenn er die Gruppe zwischenzeitlich gewechselt hat.


    Für jede Hilfe bin ich dankbar
    Jochen
     

  2. #2
    andi_g69 andi_g69 ist offline Mitglied Gold
    Registriert seit
    Feb 2005
    Beiträge
    174
    Du hast kein DBMS angegeben, also habe ich hier mal eine Variante in T-SQL. So oder so sollte das Prinzip klarwerden. Der Übersichtlichkeit halber habe ich Gueltig_ab als Datum definiert, so werden die Ergebnisse besser lesbar. Funktioniert mit Integer aber genauso



    USE TempDB
    GO
    CREATE TABLE MAGRP_HISTORIE (
    MANR_F int ,
    GUELTIG_AB datetime,
    MONATSPLANTEILNR_F int
    )
    GO
    INSERT INTO MAGRP_HISTORIE VALUES (1, '17 May 2005', 1)
    INSERT INTO MAGRP_HISTORIE VALUES (1, '1 May 2005', 2)
    INSERT INTO MAGRP_HISTORIE VALUES (2, '15 May 2005', 1)
    INSERT INTO MAGRP_HISTORIE VALUES (2, '10 May 2005', 2)
    INSERT INTO MAGRP_HISTORIE VALUES (2, '5 May 2005', 3)
    INSERT INTO MAGRP_HISTORIE VALUES (3, '2 May 2005', 3)
    GO
    SELECT * FROM MAGRP_HISTORIE
    GO

    SELECT *
    FROM MAGRP_HISTORIE m join (
    SELECT h.MANR_F, MAX (h.Gueltig_ab) maxab
    FROM MAGRP_HISTORIE h
    WHERE h.Gueltig_ab < GETDATE() -- Hier kommt die Datumsvariable hin
    GROUP BY h.MANR_F
    ) mmax on m.MANR_F = mmax.MANR_F AND m.GUELTIG_AB = mmax.maxab
    WHERE m.MONATSPLANTEILNR_F = 1 -- Hier kommt die Gruppenvariable hin
    GO
    DROP TABLE MAGRP_HISTORIE
    GO
     

  3. #3
    Jo_S Jo_S ist offline Grünschnabel
    Registriert seit
    May 2005
    Beiträge
    2
    Hallo,

    ich bin begeistert, nach dem ich es etwas angepasst hatte (ich schrieb ja leider das DBMS nicht dazu), funktioniert es wunderbar.

    Konnte es auch mehrfach wiederholen, nachdem ich das "drop Tabelle ... " herausgenommen habe (-:

    Also vielen Dank !

    Jochen
     

Ähnliche Themen

  1. MySQL-Abfrage mehrfach sortieren
    Von styler2go im Forum PHP
    Antworten: 7
    Letzter Beitrag: 07.07.10, 21:35
  2. Abfrage mehrfach verwenden
    Von luchs3 im Forum PHP
    Antworten: 10
    Letzter Beitrag: 06.07.09, 22:25
  3. Antworten: 1
    Letzter Beitrag: 28.06.09, 08:28
  4. MYSQL Abfrage Datensätze mehrfach (Anzahl n) ausgeben
    Von xtra03 im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 18.10.07, 09:16
  5. Mehrfach-sortierte MySQL-Abfrage
    Von Sunke im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 05.03.06, 10:55