CREATE TABLE IF NOT EXISTS `data` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
INSERT INTO `data` (`id`, `title`) VALUES (1, 'Название 1');
INSERT INTO `data` (`id`, `title`) VALUES (2, 'Название 2');
INSERT INTO `data` (`id`, `title`) VALUES (3, 'Название 3');
INSERT INTO `data` (`id`, `title`) VALUES (4, 'Название 4');
CREATE TABLE IF NOT EXISTS `category` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`category` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
INSERT INTO `category` (`id`, `category`) VALUES (1, 'Категория 1');
INSERT INTO `category` (`id`, `category`) VALUES (2, 'Категория 2');
CREATE TABLE IF NOT EXISTS `link` (
`data` int(10) NOT NULL,
`category` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `link` (`data`, `category`) VALUES (1, '1');
INSERT INTO `link` (`data`, `category`) VALUES (1, '2');
INSERT INTO `link` (`data`, `category`) VALUES (2, '1');
INSERT INTO `link` (`data`, `category`) VALUES (2, '2');
INSERT INTO `link` (`data`, `category`) VALUES (3, '2');
INSERT INTO `link` (`data`, `category`) VALUES (4, '1');
data category link
| id | title | | id | category | | data | category |
| 1 | Название 1 | | 1 | Категория 1 | | 1 | 1 |
| 2 | Название 2 | | 2 | Категория 2 | | 1 | 2 |
| 3 | Название 3 | | 2 | 1 |
| 4 | Название 4 | | 2 | 2 |
| 3 | 2 |
| 4 | 1 |
$result = mysql_query("SELECT * GROUP_CONCAT(`category`) as `category` FROM `link` LEFT JOIN `category` ON link.category=category.id LEFT JOIN `data` ON link.data=data.id",$db);
while ($myrows = mysql_fetch_array($result))
{
printf("%s - %s><br>",$myrows['title'],$myrows['category']);
}
mysql_free_result($result);
Результат
Название 1 - Категория 1 , Категория 2
Название 2 - Категория 1 , Категория 2
Название 3 - Категория 2
Название 4 - Категория 1
Заранее благодарен за помощь