J'ai une table avec la structure suivante:SQL pour sélectionner uniquement le dernier élément d'une table versionnée
CREATE TABLE items (
id serial not null,
title character varying(255),
version_id integer DEFAULT 1,
parent_id integer,
CONSTRAINT items_pkey PRIMARY KEY (id)
)
Ainsi, la table contient des lignes qui se présente comme ceci:
id: 1, titre: "Version 1", id_version: 1, parent_id: 1
id: 2, titre: "Version 2", id_version: 2, parent_id: 1
id: 3, titre: "Enregistrement complètement différent", id_version: 1, parent_id: 3
Voici le code SQL que j'ai pour sélectionner sur tous les enregistrements avec version la plus récente ids:
select * from items
inner join (
select parent_id, max(version_id) as version_id from items
group by parent_id) as vi
on items.version_id = vi.version_id and items.parent_id = vi.parent_id
Est-il possible d'écrire cette instruction SQL afin qu'il n'utilise pas subselect?
Peut-être que je ne comprends pas bien mais que vous cherchez 'distinct on'? http://www.postgresql.org/docs/8.4/interactive/queries-select-lists.html#QUERIES-DISTINCT – Wolph