Вопрос

Я использую представление в виде таблицы для объединения данных в 3 таблицах:

create view category_list as 
select forum_categories.*, max( forum_answer.a_id ) as latest_answer_id 
from forum_categories 
left join forum_question on forum_question.catid = forum_categories.id 
left join forum_answer on forum_answer.question_id = forum_question.id
and forum_answer.qtitle = forum_question.topic;

Однако я испытываю две проблемы:

  • Извлекается только одна запись из forum_categories для связывания с
  • Я не могу связать forum_answer.qtitle с forum_question.topic

пожалуйста, посоветуйте :)

Спасибо.

Это было полезно?

Решение

Предложение group by отсутствует.Вот очень простой пример, который я собрал, а под ним sql, который я использовал для создания простых тестовых данных.

select 
    cat.*
    , max( ans.id )
from cat
left join ques on ques.cat_id = cat.id
left join ans on ans.ques_id = ques.id
group by cat.id, cat.name

create table cat ( id serial, name varchar (10) );
create table ques ( id serial, name varchar (10), cat_id integer );
create table ans ( id serial, name varchar (10), ques_id integer );

insert into cat (name) values ( 'cat 1' );
insert into cat (name)  values ( 'cat 2' );
insert into cat  (name) values ( 'cat 3' );

insert into ques (name, cat_id) values ( 'ques 1', 1 );
insert into ques (name, cat_id)  values ( 'ques 2', 1 );
insert into ques (name, cat_id)  values ( 'ques 3', 1 );
insert into ques (name, cat_id)  values ( 'ques 4', 2 );
insert into ques (name, cat_id)  values ( 'ques 5', 2 );
insert into ques (name, cat_id)  values ( 'ques 6', 2 );
insert into ques (name, cat_id)  values ( 'ques 7', 2 );

insert into ans (name, ques_id)  values ( 'ans 1', 1 );
insert into ans (name, ques_id)  values ( 'ans 2', 2 );
insert into ans (name, ques_id)  values ( 'ans 3', 2 );
insert into ans (name, ques_id)  values ( 'ans 4', 1 );
insert into ans (name, ques_id)  values ( 'ans 5', 2 );
insert into ans (name, ques_id)  values ( 'ans 6', 1 );
insert into ans (name, ques_id)  values ( 'ans 7', 1 );
insert into ans (name, ques_id)  values ( 'ans 8', 1 );
insert into ans (name, ques_id)  values ( 'ans 9', 2 );
insert into ans (name, ques_id)  values ( 'ans 10', 2 );
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top