Aikonia Geschrieben 6. Februar 2009 Melden Share Geschrieben 6. Februar 2009 Hi Leute, hatte da grad ne Idee, wie ich mir viel Arbeit sparen könnte, kann sie leider nicht umsetzen, also folgende Prinziptabelle: Artikel - Revision - Archiviert 1 1 J 1 2 N 1 3 N 2 1 J 2 2 N 3 1 J Interessant sind alle Artikel, bei denen in Revision < max noch keine Archivierung eingetragen ist. Also in diesem Fall sollte als Ergebnis so aussehen Artikel - Revision - Archiviert 1 2 N Wär echt ne große Hilfe Danke Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Admin Gandalf Geschrieben 7. Februar 2009 Admin Melden Share Geschrieben 7. Februar 2009 Könnte so aussehen >> select artikel,revision,archiviert from where archiviert='N'; Wenns sortiert werden soll dann >> select artikel,revision,archiviert from where archiviert='N' order by ; Brauchbare SQL-Kurzreferenz findest du hier. http://www.inweb.de/chetan/Deutsch/Ressourcen/SQL.html Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Aikonia Geschrieben 7. Februar 2009 Autor Melden Share Geschrieben 7. Februar 2009 Könnte so aussehen >> select artikel,revision,archiviert from <Prinziptabelle> where archiviert='N'; Wenns sortiert werden soll dann >> select artikel,revision,archiviert from <Prinziptabelle> where archiviert='N' order by <z.B.: Artikel>; Brauchbare SQL-Kurzreferenz findest du hier. http://www.inweb.de/chetan/Deutsch/Ressourcen/SQL.html Hi, Danke erstmal, gut dann bekomm ich alle Einträge, die noch nicht archiviert sind, müsste dann noch immer die höchste Revision aus der Auswahl entfernen, habe gehofft, man kann pro Artikel die höchste Revision "ausblenden" Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
hvkls Geschrieben 7. Februar 2009 Melden Share Geschrieben 7. Februar 2009 ... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Shadow4711 Geschrieben 9. Februar 2009 Melden Share Geschrieben 9. Februar 2009 Hallo, welche Datenbank setzt du dafür ein? Ich vermute da müsste man mit einem Cursor ran. Gruß Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
rudolf11 Geschrieben 9. Februar 2009 Melden Share Geschrieben 9. Februar 2009 du brauchst eine zusätzliche (eindeutige) id-spalte in der tabelle dann geht es wie folgt: SELECT * FROM t0 WHERE ( NOT (id IN ( SELECT t3.id FROM t0 AS t3 INNER JOIN (SELECT Artikel, MAX(Revision) AS MaxRevision FROM t0 AS t2 GROUP BY Artikel) AS t1 ON t3.Artikel = t1.Artikel AND t3.Revision = t1.MaxRevision ) ) ) AND t0.Archiviert = 'N' "t0" ist dein tabellenname... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Admin Gandalf Geschrieben 9. Februar 2009 Admin Melden Share Geschrieben 9. Februar 2009 Sag mal welche Datenbank du verwendest dann kann ich dir auch ein passendes Query bauen. Hier mal ein Beispiel wie es laufen könnte.( Datenbank ist Access ) SELECT Tabelle1.Artikel, First(Tabelle1.Revision) AS Revision, Tabelle1.ArchiviertFROM Tabelle1 GROUP BY Tabelle1.Artikel, Tabelle1.Archiviert HAVING (((Tabelle1.Archiviert)="N")); Bei dieser Testtabelle bringt das Query dann immer das erste Ergebnis das passt, also die kleinste "Revisonsnummer" die noch nicht archiviert wurde, wichtig dabei ist dass die Reihenfolge in der Tabelle stimmt. Es muss ein Index auf das Feld "Revision" gelegt werden und dieser dann selektiert werden. Der Primary-Key alleine genügt nicht da die Einträge in der Tabelle ja beliebig erfolgen können. Edit @Gandal: @Rudolf11 war schneller Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Aikonia Geschrieben 9. Februar 2009 Autor Melden Share Geschrieben 9. Februar 2009 Hi Leute, rießen Dankeschön für eure Mühe, Datenbank ist ne Oracle 9 (i?), werd´s versuchen, sobald es die Zeit zulässt und berichten. Grüße Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Empfohlene Beiträge
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.