3 つのテーブルからデータを取得しています。これらのデータをjspページに表示したい。私の問題は、結合後のデータが冗長であることです
冗長なデータを表示したくありません。
私のテーブルは
create table questions(id integer,title varchar(140),body varchar(2000),
primary key(id));
create table question_tags(id integer,tag_name varchar(50),question_id integer,
primary key(id),foreign key(question_id) references questions(id));
create table answers(id integer,answer varchar(2000),question_id integer,
primary key(id),foreign key(question_id) references questions(id));
データを取得するためのクエリ
SELECT questions.*,`question_tags`.*, `answers`.*
FROM `questions`
JOIN `answers`
ON `questions`.`id` = `answers`.`question_id`
JOIN `question_tags`
ON `questions`.`id` = `question_tags`.`question_id`
WHERE `questions`.`id` = '1'
データ取得後の結果
ID TITLE BODY TAG_NAME QUESTION_ID ANSWER
1 a hello java 1 good
1 a hello java 1 exellent
1 a hello java 1 ok
1 a hello mysql 1 good
1 a hello mysql 1 exellent
1 a hello mysql 1 ok
1 a hello jquery 1 good
1 a hello jquery 1 exellent
1 a hello jquery 1 ok
ここでは、結果セットを使用してデータを取得し、jsp で表示しています
jspに次のデータを表示したい
question.id|question.title|question.body|tag_names | answers
1 a hello java good
mysql excellent
jquery ok
これは、数行だけでした。ここで、合計 o/p 行は 1*3*3=9 です。テーブルでデータが増加した場合、重複データが増加し、それを解決する方法です。これは上記のコードのSQL フィドルです