Bonsoir,
Je profite d'un regain d'intérêt pour le SQL sur le forum actuellement, en posant mes propres questions (je suis vraiment novice en la matière) : est-il possible de fusionner ces deux requêtes afin qu'elles ne fassent qu'une seule ?
Je dois pouvoir bidouiller avec mon interface pour Postgres, mais je me disais qu'une seule requête serait mieux optimisée...
À titre informatif, les tables interrogées :
Modifié par Olivier C (21 Feb 2022 - 07:04)
Je profite d'un regain d'intérêt pour le SQL sur le forum actuellement, en posant mes propres questions (je suis vraiment novice en la matière) : est-il possible de fusionner ces deux requêtes afin qu'elles ne fassent qu'une seule ?
-- Sélectionner un article avec l'ID 1
SELECT * FROM __post WHERE _id = 1;
-- Sélectionner l'auteur de ce même article :
SELECT __person._given_name, __person._family_name
FROM __post
INNER JOIN __person
ON __post._author_id = __person._id AND __post._id = 1;
Je dois pouvoir bidouiller avec mon interface pour Postgres, mais je me disais qu'une seule requête serait mieux optimisée...
À titre informatif, les tables interrogées :
CREATE TABLE __post (
_id BIGSERIAL NOT NULL,
_name VARCHAR(255) NOT NULL, -- titre
_content TEXT NULL, -- contenu
_creation TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- date de création -- DEFAULT CURRENT_DATE
_revision TIMESTAMP NULL, -- date de révision
_type VARCHAR(255) NULL, -- article, page, etc...
_slug VARCHAR(255) NULL, -- slug propre à l'article, différent de l'url canonique, celle-ci étant reconstituée à partir le l'index par exemple
_description VARCHAR NULL, -- contenu utilisé pour la balise meta description
_author_id BIGINT NOT NULL, -- créateur du post (contributeur principal)
_status SMALLINT NOT NULL, -- publié, brouillon, refusé, poubelle
_comments_status BOOLEAN NULL, -- commentaires activés ou non
_keywords VARCHAR(255) NULL, -- mots-clefs pour le post
_medias VARCHAR(255) NULL, -- medias en lien avec le post
CONSTRAINT __post_pkey PRIMARY KEY (_id),
CONSTRAINT __author_id__person_fkey FOREIGN KEY (_author_id) REFERENCES __person(_id)
);
CREATE TABLE __person (
_id BIGSERIAL NOT NULL,
_account_id BIGINT NULL, -- référence éventuelle à __account
_sexe CHAR(1) NULL, -- selon la norme ISO/IEC 5218 ; inconnu : 0, homme : 1, femme : 2, non applicable : 9
_given_name VARCHAR(32) NULL, -- prénom
_additional_name VARCHAR(32) NULL, -- deuxième prénom
_family_name VARCHAR(32) NULL, -- nom de famille
_usual_name VARCHAR(32) NULL, -- nom d'usage, nom d'épouse
_nickname VARCHAR(32) NULL, -- surnom
_prefix VARCHAR(32) NULL, -- titres et civilité
_suffix VARCHAR(32) NULL, -- abréviation typographique postname (ex : s.j., o.p.)
_birth_date DATE NULL, -- date de naissance
-- [etc, je simplifie un peu, ici c'est pour l'exemple...]
_description TEXT NULL, -- 800 caractères max
CONSTRAINT __person_pkey PRIMARY KEY (_id)
);
Modifié par Olivier C (21 Feb 2022 - 07:04)