Показать сообщение отдельно
  #1 (permalink)  
Старый 27.12.2017, 12:29
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

достать все товары, которые принадлежат более чем одной категории
Я это сделал, вывел так: название продукта и название категории, через запятую, можно ли вывести не так, а что бы выводило каждый раз отдельно название продукта и категорию?

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


Если убрать GROUP BY то будет выводить, как мне надо: отдельно название продукта и категория, но не будет выводить повторное название продукта

сейчас выводит так

картошка - Овощи, Соки
бананы - Съедобное, фрукты, Сок

Хочу что бы было примерно так

картошка - Овощи
картошка - Соки
бананы - Съедобное
бананы - Фрукты
бананы - Соки


-- 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 */;

Последний раз редактировалось DivMan, 27.12.2017 в 12:38.
Ответить с цитированием