Достать все товары, которые принадлежат более чем одной категории - MySQL

Узнай цену своей работы

Формулировка задачи:

Я это сделал, вывел так: название продукта и название категории, через запятую, можно ли вывести не так, а что бы выводило каждый раз отдельно название продукта и категорию?
SELECT product.name, COUNT(product.id), GROUP_CONCAT(category.name) FROM product 
LEFT JOIN order2 ON order2.product_id = product.id 
LEFT JOIN category ON category.id = order2.category_id
GROUP BY product.id HAVING COUNT(product.id) > 1
сейчас выводит так
картошка - Овощи, Соки
бананы - Съедобное, фрукты, Соки
Хочу что бы было примерно так картошка - Овощи картошка - Соки бананы - Съедобное бананы - Фрукты бананы - Соки
-- phpMyAdmin SQL Dump
-- version 4.3.11
-- http://www.phpmyadmin.net
--
-- Хост: 127.0.0.1
-- Время создания: Дек 27 2017 г., 10:23
-- Версия сервера: 5.6.24
-- Версия PHP: 5.6.8
 
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
 
--
-- База данных: `lesson9`
--
 
-- --------------------------------------------------------
 
--
-- Структура таблицы `category`
--
 
CREATE TABLE IF NOT EXISTS `category` (
  `id` INT(11) NOT NULL,
  `name` VARCHAR(256) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
 
--
-- Дамп данных таблицы `category`
--
 
INSERT INTO `category` (`id`, `name`) VALUES
(1, 'Овощи'),
(2, 'Соки'),
(3, 'Фрукты'),
(4, 'Съедобное');
 
-- --------------------------------------------------------
 
--
-- Структура таблицы `order2`
--
 
CREATE TABLE IF NOT EXISTS `order2` (
  `id` INT(11) NOT NULL,
  `product_id` INT(11) NOT NULL,
  `category_id` INT(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
 
--
-- Дамп данных таблицы `order2`
--
 
INSERT INTO `order2` (`id`, `product_id`, `category_id`) VALUES
(1, 2, 1),
(2, 2, 2),
(3, 3, 3),
(4, 4, 4),
(5, 4, 3),
(6, 4, 2),
(7, 7, 2),
(8, 8, 2),
(9, 5, 4);
 
-- --------------------------------------------------------
 
--
-- Структура таблицы `product`
--
 
CREATE TABLE IF NOT EXISTS `product` (
  `id` INT(11) NOT NULL,
  `name` VARCHAR(256) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
 
--
-- Дамп данных таблицы `product`
--
 
INSERT INTO `product` (`id`, `name`) VALUES
(1, 'Огурец '),
(2, 'Картошка'),
(3, 'яблоки'),
(4, 'бананы'),
(5, 'апельсины'),
(6, 'виноград '),
(7, 'добрый'),
(8, 'Моя семья');
 
--
-- Индексы сохранённых таблиц
--
 
--
-- Индексы таблицы `category`
--
ALTER TABLE `category`
  ADD PRIMARY KEY (`id`);
 
--
-- Индексы таблицы `order2`
--
ALTER TABLE `order2`
  ADD PRIMARY KEY (`id`);
 
--
-- Индексы таблицы `product`
--
ALTER TABLE `product`
  ADD PRIMARY KEY (`id`);
 
--
-- AUTO_INCREMENT для сохранённых таблиц
--
 
--
-- AUTO_INCREMENT для таблицы `category`
--
ALTER TABLE `category`
  MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=5;
--
-- AUTO_INCREMENT для таблицы `order2`
--
ALTER TABLE `order2`
  MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=10;
--
-- AUTO_INCREMENT для таблицы `product`
--
ALTER TABLE `product`
  MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=9;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Решение задачи: «Достать все товары, которые принадлежат более чем одной категории»

textual
Листинг программы
mysql> select
    -> 	p.name 'Продукт', c.name 'Категория'
    -> from product p
    -> join order2 o
    -> 	on o.product_id = p.id
    -> join category c
    -> 	on c.id = o.category_id;
+-----------+-----------+
| Продукт   | Категория |
+-----------+-----------+
| картошка  | овощи     |
| картошка  | соки      |
| бананы    | соки      |
| добрый    | соки      |
| моя семья | соки      |
| яблоки    | фрукты    |
| бананы    | фрукты    |
| бананы    | съедобное |
| апельсины | съедобное |
+-----------+-----------+
9 rows in set (0.00 sec)

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы