![]() |
Datenbank: FB • Version: 1.5 • Zugriff über: wurscht
SQL-Abfrage
Hallo,
ich habe folgende Tabelle create table test(id integer, reportid integer, personalid integer) mit folgenden Werten 11, 1, 1 12, 1, 1 13, 1, 1 14, 1, 2 15, 1, 2 16, 2, 1 16, 2, 1 Das ist nicht die vollständige Tabelle, es werden pro Report und Person mehrere werte gespeichert. Ich benötige jetzt pro Report nur einmal die PersonalId Ergebnis soll also sein reportid, personalid 1, 1 1, 2 2, 1 Das Feld Id ist mir Wurscht ;) Die Frage ist, wie bau ich das in SQL zusammen. Zur Zeit behelfe ich mich mit select distinct(reportid+personalid),reportid,personalid from test Sobald die summe der Ids größer 32bit ist, habe ich ein (theoretisches Problem) Ausserdem gefällt mir ein distinct über eine Summe nicht so. Heiko |
Re: SQL-Abfrage
Ah,
Firebird und subselects Lösung: select test1.id, test1.reportid,test1.personalid,personal.name from test test1 join personal on personal.id=test1.personalid where test1.id in ( select max(test2.id) from test test2 where (test2.personalid=test1.personalid) and (test2.reportid=test1.reportid) ) Die Performance ist auch super (18 ms) Heiko |
Re: SQL-Abfrage
Zitat:
Versuchs mal so
SQL-Code:
(Nicht getestet)
select reportid,personalid from test group by reportid, personalid
|
Re: SQL-Abfrage
Hallo,
klappt auch ! Naja, mit dem GroupBy stehe ich auf dem Kriegsfuss ;) Das Problem ist dann aber folgendes, sobald ich das Ergebnise "verjoine", um z.B. die Personaldaten mit anzeigen zu lassen, muss ich jede select-Spalte in das GroupBy mit reinpacken. Das ist aber OK. Aber, mit GroupBy braucht FB doppelt so lange. Naja, 18ms zu 28ms ;) Das liegt wohl daran, das das test.id primary key ist, aso ein select max flink ist. Danke trotzdem Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz