Горбушка
Ищу её...
- Регистрация
- 2 Май 2008
- Сообщения
- 3.444
- Реакции
- 2.527
- Автор темы
- #1
Есть запрос:
Нужно оптимизировать и убрать дубли...
В настоящий момент если у человека 2 телефона и 2 города (типы 3 и 1 соответственно) - происходит вывод 4 строк, а надо выводить только 2...
Так же по возможности реализовать с минимальной нагрузкой на БД.
P.s. этот запрос работает, но выводит слишком много лишнего
При 100 городах и 100 телефонах у 1 клиента будет 10 000 строчек на 1 человека, а надо 100.
Код:
SELECT
`u`.*,
`c`.`title` AS `city`,
`p`.`title` AS `phone`
FROM
`clients` AS `u`
LEFT JOIN
(SELECT `title`, `client_id` FROM `clients_contacts` WHERE `type` = 1) AS `c`
ON
`u`.`id` = `c`.`client_id`
LEFT JOIN
(SELECT `title`, `client_id` FROM `clients_contacts` WHERE `type` = 3) AS `p`
ON
`p`.`client_id` = `u`.`id`;
Нужно оптимизировать и убрать дубли...
В настоящий момент если у человека 2 телефона и 2 города (типы 3 и 1 соответственно) - происходит вывод 4 строк, а надо выводить только 2...
Так же по возможности реализовать с минимальной нагрузкой на БД.
P.s. этот запрос работает, но выводит слишком много лишнего

Код:
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `clients`
-- ----------------------------
DROP TABLE IF EXISTS `clients`;
CREATE TABLE `clients` (
`id` int(9) NOT NULL AUTO_INCREMENT,
`title` varchar(255) CHARACTER SET utf8 NOT NULL,
`type` int(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
-- ----------------------------
-- Records of clients
-- ----------------------------
INSERT INTO `clients` VALUES ('1', 'Нежность', '1');
INSERT INTO `clients` VALUES ('2', 'Иванова Инна Ивановна', '2');
INSERT INTO `clients` VALUES ('3', 'Сидорова Инна Ивановна', '2');
-- ----------------------------
-- Table structure for `clients_contacts`
-- ----------------------------
DROP TABLE IF EXISTS `clients_contacts`;
CREATE TABLE `clients_contacts` (
`id` int(9) NOT NULL AUTO_INCREMENT,
`client_id` int(9) NOT NULL,
`title` varchar(255) CHARACTER SET utf8 NOT NULL,
`type` int(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT;
-- ----------------------------
-- Records of clients_contacts
-- ----------------------------
INSERT INTO `clients_contacts` VALUES ('1', '1', '1', '1');
INSERT INTO `clients_contacts` VALUES ('2', '1', 'Петровка 38', '2');
INSERT INTO `clients_contacts` VALUES ('3', '2', '1', '1');
INSERT INTO `clients_contacts` VALUES ('4', '1', '9001234567', '3');
INSERT INTO `clients_contacts` VALUES ('5', '1', 'admin@test.ru', '4');
INSERT INTO `clients_contacts` VALUES ('6', '1', '2', '1');
INSERT INTO `clients_contacts` VALUES ('7', '1', '9001231231', '3');
INSERT INTO `clients_contacts` VALUES ('8', '2', '9001231231', '3');
INSERT INTO `clients_contacts` VALUES ('9', '3', '2', '1');
Последнее редактирование: