私は参加するのに苦労しています。基本的には、私のクエリのタグ結果を単一の行にしたいのです。MySQL Left Outer Joinと結果の結合
cover
category
cover_tag
tag
クエリがカバー、カテゴリを返し、そのカテゴリのすべてのタグ:
は、以下の私のテーブルです。タグのNULL結果は許可されています。これは、タグが追加されていない場合でもすべてのカバーを取得します。
データベースには2つの行があります。第1カバーには3つのタグがあり、第2カバーにはタグがありません。以下のクエリを実行すると、4行が得られます。それらのうちの3つは第1のカバーであり、異なるタグを有し、第4のタグはタグのない行である。
基本的には、1つの行内の各カバーのすべてのタグを含む2つの結果が必要です。これは可能ですか?
SELECT *
FROM cover
JOIN category ON cover.category_id = category.id
LEFT OUTER JOIN cover_tag ON cover_tag.cover_id = cover.id
LEFT OUTER JOIN tag ON cover_tag.tag_id = tag.id
phpMyAdminの
CREATE TABLE `category` (
`id` int(9) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`slug` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
INSERT INTO `category` VALUES(1, 'Cars', 'cars');
INSERT INTO `category` VALUES(2, 'Music', 'music');
INSERT INTO `category` VALUES(3, 'Abstract', 'abstract');
CREATE TABLE `cover` (
`id` int(9) NOT NULL AUTO_INCREMENT,
`category_id` int(9) NOT NULL,
`title` varchar(255) NOT NULL,
`slug` varchar(255) NOT NULL,
`image` varchar(255) NOT NULL,
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `cover` VALUES(1, 1, 'Red Ferarri', 'red-ferarri', 'redferrari.jpg', '2011-12-20 23:48:11');
INSERT INTO `cover` VALUES(2, 1, 'Ford Focus ST', 'ford-focus-st', 'focuss.jpg', '2011-12-20 23:48:11');
CREATE TABLE `cover_tag` (
`cover_id` int(9) NOT NULL,
`tag_id` int(9) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `cover_tag` VALUES(1, 1);
INSERT INTO `cover_tag` VALUES(1, 2);
INSERT INTO `cover_tag` VALUES(1, 3);
CREATE TABLE `tag` (
`id` int(9) NOT NULL AUTO_INCREMENT,
`tag` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
INSERT INTO `tag` VALUES(1, 'cars');
INSERT INTO `tag` VALUES(2, 'ferarri');
INSERT INTO `tag` VALUES(3, 'speed');
サンプルがありますか?アットダンプ? –
StackOverflowに追加できるように、データをphpMyAdminで取得するにはどうすればよいですか?私はテーブル形式でしかデータを取得しません。 – GV1
エクスポートボタンがあります。それを探す。 –