A sequência de queries SQL abaixo cria a estrutura base de um banco de dados PostgreSQL que será utilizada na questão.
CREATE SCHEMA clube;
CREATE TABLE clube.socio (
id SERIAL,
primeiro_nome VARCHAR(40) NOT NULL,
sobrenome VARCHAR(200) NOT NULL,
endereco VARCHAR(200) NOT NULL,
telefone VARCHAR(20) NOT NULL,
recomendado_por INTEGER,
data_cadastro TIMESTAMP WITHOUT TIME ZONE NOT NULL,
CONSTRAINT socio_data_cadastro_key UNIQUE(data_cadastro),
CONSTRAINT socio_pkey PRIMARY KEY(id)
) WITH (oids = false);
CREATE TABLE clube.instalacao (
id SERIAL,
nome VARCHAR(200) NOT NULL,
custo_por_socio NUMERIC(10,2),
custo_por_convidado NUMERIC(10,2),
custo_inicial NUMERIC(10,2),
CONSTRAINT instalacao_pkey PRIMARY KEY(id)
) WITH (oids = false);
CREATE TABLE clube.agendamento (
id SERIAL,
id_socio INTEGER NOT NULL,
id_instalacao INTEGER NOT NULL,
inicio TIMESTAMP WITHOUT TIME ZONE NOT NULL,
fim TIMESTAMP WITHOUT TIME ZONE,
CONSTRAINT agendamento_pkey PRIMARY KEY(id),
CONSTRAINT agendamento_fk FOREIGN KEY (id_socio)
REFERENCES clube.socio(id)
ON DELETE RESTRICT ON UPDATE CASCADE
NOT DEFERRABLE,
CONSTRAINT agendamento_fk1 FOREIGN KEY (id_instalacao)
REFERENCES clube.instalacao(id)
ON DELETE RESTRICT ON UPDATE CASCADE
NOT DEFERRABLE
) WITH (oids = false);
Qual das queries SQL abaixo busca corretamente todos os campos dos agendamentos futuros, mostrando também o telefone de quem recomendou o sócio que agendou a instalação, quando existente?