query ueber table mit filter

ich habe zwei tabellen eine tabelle mit anlagen, jede analge mit id gibts nur einmal - logo.
zweite tabelle mit versionen und daum.

mittels left outer join wuerde wuerde unten stehende taberlle rauskommen:

Id     |standort |bezeichnung   |version |versionsdate
--------------------------------------------------------------------------------------
1      |da       |diese anlage  |1.0.0   |	2006.03.12
1      |da       |diese anlage  |1.1.0   |	2004.04.01
1      |da       |diese anlage  |1.0.3   |	2006.03.20
1      |da       |diese anlage  |1.0.1   |	2002.03.20
2      |hier     |jene anlage   |1.0.6   |	2005.09.11
2      |hier     |jene anlage   |0.0.9   |	2000.02.21
2      |hier     |jene anlage   |1.1.5   |	2002.08.01
2      |hier     |jene anlage   |1.2.0   |	2004.11.01
3      |dort     |welchige      |        |

Ich moechte aber das so wie untere tabelle, wenn moeglich in einer abfrage. wie solls ichs machen???

Id     |standort |bezeichnung   |version |versionsdate
--------------------------------------------------------------------------------------
1      |da       |diese anlage  |1.0.3   |	2006.03.20
2      |hier     |jene anlage   |1.0.6   |	2005.09.11
3      |dort     |welchige      |        |

hi,

probier mal, den select auf die geräte id zu gruppieren (GROUP BY) und dir von version und dem datum den MAX wert für jedes gerät zu holen. sollte an sich funktionieren…

cu tb.

GROUP BY geht nicht, weil ‘column “tbl_version.bar” must appear in the GROUP BY clause or be used in an aggregate function’ und diese bedingung kollidiert mit meinen abfrageergebnissen

MAX gehen nicht, weil ich ein GROUP BY ‘tbl_version.anlage_id’ machen muesste, aber als ergebnis den primary-key von tbl_version brauche um ihn in die WHERE-bedingung ein zu bauen. das verbietet sich aber, weil ‘column “tbl_version.id” must appear in the GROUP BY clause or be used in an aggregate function’

ganz schoen verzwickt…wa? :frowning:

kannst du mal den aufbau der tabellen (sql-code) hier posten? dann ist das glaub ich einfach nachzuvollziehen :wink:

cu tb.

du wolltest es so :wink:
ich poschte aber nicht alles, also index, keys, triggers, rules…
sonst platz das forum :smiley:

CREATE TABLE anlagen.tbl_anlage
(
– Vererbt: erstellt_am timestamp DEFAULT (‘now’::text)::timestamp(6) without time zone,
– Vererbt: erstellt_benutzer_id int4 DEFAULT 0,
– Vererbt: aenderung_am timestamp,
– Vererbt: aenderung_benutzer_id int4 DEFAULT 0,
– Vererbt: geloescht_am timestamp,
– Vererbt: geloescht_benutzer_id int4 DEFAULT 0,
– Vererbt: geloescht bool DEFAULT false,
id int4 NOT NULL, – primarykey(wird durch avt generiert) format: [avtstandortnummer][baujahr][nummer der anlage] → z.b.: 3200501
anlagentyp_id int4 NOT NULL, – foreignkey → tbl_anlagentyp.id
hersteller_id int4 NOT NULL, – foreignkey → tbl_firma.id
planungsart_id int4 NOT NULL, – foreignkey → tbl_planungsart.id
avtnr varchar(20) NOT NULL, – avt interne anlagennummer
kundennr varchar(50), – kunden interne anlagennummer
standort varchar(150) DEFAULT ‘unbekannt’::character varying, – wo steht die anlage?
bezeichnung varchar(100) NOT NULL, – bezeichnung der anlage z.b.: ‘Venloer Str./Freimersd. Weg’
ip inet, – welche ip-adresse hat die anlage
laengengrad int2 DEFAULT 0, – laengengrad
laengenminute int2 DEFAULT 0, – laengenminute
laengensekunde int2 DEFAULT 0, – laengensekunde
breitengrad int2 DEFAULT 0, – breitengrad
breitenminute int2 DEFAULT 0, – breitenminute
breitensekunde int2 DEFAULT 0, – breitensekunde
CONSTRAINT pkey__tbl_anlage__id PRIMARY KEY (id),
CONSTRAINT fkey__tbl_anlage__anlagentyp_id FOREIGN KEY (anlagentyp_id)
REFERENCES anlagen.tbl_anlagentyp (id) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT fkey__tbl_anlage__hersteller_id FOREIGN KEY (hersteller_id)
REFERENCES benutzer.tbl_firma (id) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT fkey__tbl_anlage__planungsart_id FOREIGN KEY (planungsart_id)
REFERENCES anlagen.tbl_planungsart (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
) INHERITS (virtual.tbl_tupelaenderung)
WITHOUT OIDS;



CREATE TABLE anlagen.tbl_planungsversion
(
– Vererbt: erstellt_am timestamp DEFAULT (‘now’::text)::timestamp(6) without time zone,
– Vererbt: erstellt_benutzer_id int4 DEFAULT 0,
– Vererbt: aenderung_am timestamp,
– Vererbt: aenderung_benutzer_id int4 DEFAULT 0,
– Vererbt: geloescht_am timestamp,
– Vererbt: geloescht_benutzer_id int4 DEFAULT 0,
– Vererbt: geloescht bool DEFAULT false,
id int4 NOT NULL DEFAULT nextval((‘anlagen.seq__tbl_planungsversion__id’::text)::regclass), – primarykey
anlage_id int4 NOT NULL, – foreignkey → tbl_anlage.id
version varchar(50) NOT NULL, – versionsstring der planung
date varchar(50) NOT NULL DEFAULT ‘-’::character varying, – datum der planungsversion(angegeben in der plng.cc)
unixtimestamp int4 DEFAULT 0, – zeitpunkt an dem die planungsversion ausgelesen wurde(ist in UTC gehalten)
CONSTRAINT pkey__tbl_planungsversion__id PRIMARY KEY (id),
CONSTRAINT fkey__tbl_planungsversion__anlage_id FOREIGN KEY (anlage_id)
REFERENCES anlagen.tbl_anlage (id) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT
) INHERITS (virtual.tbl_tupelaenderung)
WITHOUT OIDS;