Необходимо написать запрос, который выберет клиентов, у которых больше 4 заказов имеют статус "Complete". Статус комплит написал это: SELECT * FROM orders WHERE status='Complete'; а как совместить с "больше 4 заказов?" ниже приведен mysql: Код: CREATE TABLE IF NOT EXISTS `clients` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(256) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ; INSERT INTO `clients` (`id`, `name`) VALUES (1, 'Виктор'), (2, 'Семен'), (3, 'Август'); CREATE TABLE IF NOT EXISTS `orders` ( `id` int(11) NOT NULL AUTO_INCREMENT, `client` int(11) NOT NULL, `status` enum('Complete','Pending','Canceled','') NOT NULL DEFAULT 'Pending', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=13 ; INSERT INTO `orders` (`id`, `client`, `status`) VALUES (1, 2, 'Pending'), (2, 1, 'Complete'), (3, 2, 'Complete'), (4, 3, 'Canceled'), (5, 2, 'Complete'), (6, 1, 'Complete'), (7, 1, 'Pending'), (8, 1, 'Pending'), (9, 2, 'Complete'), (10, 2, 'Complete'), (11, 1, 'Complete'), (12, 2, 'Complete');
Код: SELECT c.* FROM clients AS c INNER JOIN orders AS o ON c.id = o.client WHERE status = 'Complete' GROUP BY c.id HAVING COUNT(c.id) > 4 вот так
не все правда ясно для меня, так как я в основном самые элементарные писал (можно с комментами? ) но по итогу все как положено http://joxi.ru/nAy8VEEfY4YEX2
ну, всё просто на самом делел. Вам нужны клиенты которые значит выборку начинаем с таблицы клиентов. Далее, вам нужно узнать про статус заказов, значит объеденяем таблицу клиентов и таблицу заказов. Добавляем условие, по которому нужно применить фильтр После того как вы сделаете INNER JOIN у вас будет в выборке не одна строка а столько, сколько заказов у этого клиента, поэтому нужно сделать GROUP BY чтобы выбрать уникальных пользователей и Having'ом создаём дополнительное условие, по которому будут выбираеться только нужные нам записи, т.е. где кол-во c.id > 4.