PHPize Online / SQLize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; 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 utf8mb4 */; -- -- База данных: `test` -- -- -------------------------------------------------------- -- -- Структура таблицы `company` -- CREATE TABLE `company` ( `company_id` int(11) NOT NULL, `company_name` text COLLATE utf8mb4_unicode_ci NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Дамп данных таблицы `company` -- INSERT INTO `company` (`company_id`, `company_name`) VALUES (1, 'company1'), (2, 'company2'), (3, 'company3'), (4, 'company4'), (5, 'company5'); -- -------------------------------------------------------- -- -- Структура таблицы `company_user` -- CREATE TABLE `company_user` ( `company_id` int(11) NOT NULL, `user_id` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Дамп данных таблицы `company_user` -- INSERT INTO `company_user` (`company_id`, `user_id`) VALUES (1, 1), (1, 2), (1, 3), (2, 3), (2, 4), (2, 5), (3, 6), (3, 7), (4, 3), (4, 4), (4, 8), (5, 10); -- -------------------------------------------------------- -- -- Структура таблицы `user` -- CREATE TABLE `user` ( `user_id` int(11) NOT NULL, `user_name` text COLLATE utf8mb4_unicode_ci NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Дамп данных таблицы `user` -- INSERT INTO `user` (`user_id`, `user_name`) VALUES (1, 'user1'), (2, 'user2'), (3, 'user3'), (4, 'user4'), (5, 'user5'), (6, 'user6'), (7, 'user7'), (8, 'user8'), (9, 'user9'), (10, 'user10'); -- -- Индексы сохранённых таблиц -- -- -- Индексы таблицы `company` -- ALTER TABLE `company` ADD PRIMARY KEY (`company_id`); -- -- Индексы таблицы `company_user` -- ALTER TABLE `company_user` ADD PRIMARY KEY (`company_id`,`user_id`), ADD KEY `user_id` (`user_id`); -- -- Индексы таблицы `user` -- ALTER TABLE `user` ADD PRIMARY KEY (`user_id`); -- -- AUTO_INCREMENT для сохранённых таблиц -- -- -- AUTO_INCREMENT для таблицы `company` -- ALTER TABLE `company` MODIFY `company_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6; -- -- AUTO_INCREMENT для таблицы `user` -- ALTER TABLE `user` MODIFY `user_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11; -- -- Ограничения внешнего ключа сохраненных таблиц -- -- -- Ограничения внешнего ключа таблицы `company_user` -- ALTER TABLE `company_user` ADD CONSTRAINT `company_user_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`), ADD CONSTRAINT `company_user_ibfk_2` FOREIGN KEY (`company_id`) REFERENCES `company` (`company_id`); COMMIT; /*!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 */;
Copy Clear
Copy Format Clear
<?php // Количество пользователей, привязанных больше чем к одной компании $result1 = $mysqli->query('SELECT COUNT(*) FROM ( SELECT user_id, COUNT(*) AS c FROM company_user GROUP BY user_id ) as t WHERE c > 1'); $count = $result1->fetch_column(); // Компании, в которых состоят только пользователи, не привязанные к другим компаниям $result2 = $mysqli->query('SELECT company_name FROM company t1 INNER JOIN ( SELECT DISTINCT company_id FROM company_user WHERE company_id NOT IN ( SELECT DISTINCT company_id FROM company_user WHERE user_id IN ( SELECT user_id FROM company_user GROUP BY user_id HAVING COUNT(user_id) > 1 ) ) ) t2 ON t1.company_id = t2.company_id'); $companies = []; while ($company = $result2->fetch_column()) { $companies[] = $company; } ?> <!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Задание 5</title> </head> <body> <p>Количество пользователей, привязанных больше чем к одной компании: <?= $count ?></p> <p>Компании, в которых состоят только пользователи, не привязанные к другим компаниям: <?= implode(', ', $companies) ?></p> </body> </html>
Show:  
Copy Clear