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

объединение четырёх таблиц
Играют 2 команды.

У каждой команды, надо вывести:
1) её город и название,
2) список игроков у каждой команды,
3) дату проведения игры,
4) статус (с играно или нет),
5) место проведения (игра может быть в городе одной из команд).

Я это всё сделал, работает, можно ли как-то сократить код?

http://sqlfiddle.com/#!9/61ef227/9

SELECT 
	
	team1.name AS team1,
	teamOne.name AS city1,
	GROUP_CONCAT(player.name SEPARATOR ', ') AS comanda1,
	
	team2.name AS team2,
	teamTwo.name AS city2,
	GROUP_CONCAT(player.name SEPARATOR ', ') AS comanda2,
	
	game.date AS data, 
	game.status,
	placeGame.name AS place

	FROM game
	
	LEFT JOIN team AS team1 ON game.team1_id = team1.id 
	LEFT JOIN team AS team2 ON game.team2_id = team2.id
	LEFT JOIN city AS teamOne ON team1.city_id = teamOne.id 
	LEFT JOIN city AS teamTwo ON team2.city_id = teamTwo.id 
	LEFT JOIN city AS placeGame ON game.game_city = placeGame.id
	LEFT JOIN player ON player.team_id = team1.id
	
	GROUP BY team1.name


-- phpMyAdmin SQL Dump
-- version 4.3.11
-- http://www.phpmyadmin.net
--
-- Хост: 127.0.0.1
-- Время создания: Дек 31 2017 г., 17:06
-- Версия сервера: 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 */;

--
-- База данных: `lesson15`
--

-- --------------------------------------------------------

--
-- Структура таблицы `city`
--

CREATE TABLE IF NOT EXISTS `city` (
  `id` int(11) NOT NULL,
  `name` varchar(256) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `city`
--

INSERT INTO `city` (`id`, `name`) VALUES
(1, 'Санкт-Петербург '),
(2, 'Москва'),
(3, 'Барселона'),
(4, 'Фулем Роуд'),
(5, 'Траффорд');

-- --------------------------------------------------------

--
-- Структура таблицы `game`
--

CREATE TABLE IF NOT EXISTS `game` (
  `id` int(11) NOT NULL,
  `team1_id` int(11) NOT NULL,
  `team2_id` int(11) NOT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `game_city` int(11) NOT NULL,
  `status` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `game`
--

INSERT INTO `game` (`id`, `team1_id`, `team2_id`, `date`, `game_city`, `status`) VALUES
(1, 2, 5, '2017-12-30 20:05:49', 1, 0),
(2, 1, 3, '2017-12-30 20:05:49', 3, 1),
(3, 3, 6, '2017-11-30 20:06:30', 5, 1),
(4, 4, 5, '2017-12-30 20:06:30', 4, 0);

-- --------------------------------------------------------

--
-- Структура таблицы `player`
--

CREATE TABLE IF NOT EXISTS `player` (
  `id` int(11) NOT NULL,
  `name` varchar(256) NOT NULL,
  `team_id` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `player`
--

INSERT INTO `player` (`id`, `name`, `team_id`) VALUES
(1, 'Андрей Лунев', 1),
(2, 'Юрий Лодыгин', 1),
(3, 'Михаил Кержаков', 1),
(4, 'Иван Новосельцев', 1),
(5, 'РЕБРОВ Артём ', 2),
(6, 'ПЕТКОВИЧ Марко ', 2),
(7, 'КОМБАРОВ Дмитрий ', 2),
(8, 'ГЛУШАКОВ Денис ', 2),
(9, 'Ракитич Иван', 3),
(10, 'Арда Туран', 3),
(11, 'Серджи Бускетс', 3),
(12, 'Давид Костас', 3),
(13, 'Давид Луиз', 4),
(14, 'Виллиан', 4),
(15, 'Педро', 4),
(16, 'Альваро Мората', 4),
(17, 'Амир Натхо', 5),
(18, 'Иван Галанин', 5),
(19, 'Михаил Лысов', 5),
(20, 'Иван Лапшов', 5),
(21, 'Антонио Валенсия', 6),
(22, 'Поль Погба', 6),
(23, 'Джесси Лингард', 6),
(24, 'Ромелу Лукаку', 6);

-- --------------------------------------------------------

--
-- Структура таблицы `team`
--

CREATE TABLE IF NOT EXISTS `team` (
  `id` int(11) NOT NULL,
  `name` varchar(256) NOT NULL,
  `city_id` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `team`
--

INSERT INTO `team` (`id`, `name`, `city_id`) VALUES
(1, 'Зенит', 1),
(2, 'Спартак', 2),
(3, 'Барселона', 3),
(4, 'Челси', 4),
(5, 'Локомотив', 2),
(6, 'Манчестер Юнайтед ', 5);

--
-- Индексы сохранённых таблиц
--

--
-- Индексы таблицы `city`
--
ALTER TABLE `city`
  ADD PRIMARY KEY (`id`);

--
-- Индексы таблицы `game`
--
ALTER TABLE `game`
  ADD PRIMARY KEY (`id`);

--
-- Индексы таблицы `player`
--
ALTER TABLE `player`
  ADD PRIMARY KEY (`id`);

--
-- Индексы таблицы `team`
--
ALTER TABLE `team`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT для сохранённых таблиц
--

--
-- AUTO_INCREMENT для таблицы `city`
--
ALTER TABLE `city`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=6;
--
-- AUTO_INCREMENT для таблицы `game`
--
ALTER TABLE `game`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=5;
--
-- AUTO_INCREMENT для таблицы `player`
--
ALTER TABLE `player`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=25;
--
-- AUTO_INCREMENT для таблицы `team`
--
ALTER TABLE `team`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=7;
/*!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 */;
Ответить с цитированием