|
|
|
|
|
для: Trianon
(26.10.2014 в 21:32)
| | Спасибо, ошибки понял, буду тренироваться. | |
|
|
|
|
|
|
|
для: gofree
(26.10.2014 в 20:36)
| | по сути.
Схема далека от нормальной формы.
Применять группирующую агрегатную функцию GROUP_CONCAT без GROUP BY
в принципе можно, но окажется сцеплена вся таблица в одну строку.
Это же не то, что ожидается?
Левое внешнее соединение здесь как-то совсем против ветра.
Сложно группировать строки по NULL полям.
Поле engine осталось за бортом, т.к. не содержит различий.
И еще, не очень понял, если a.id = b.modif , то почему у них разные типы?
В целом:
SELECT GROUP_CONCAT(a.type ORDER BY b.id ASC SEPARATOR ' : ') AS types, b.type_id
FROM a
JOIN b ON a.id = b.modif
GROUP BY b.type_id
ORDER BY b.type_id
|
| |
|
|
|
|
|
|
|
для: gofree
(26.10.2014 в 20:36)
| | То, что движок при каждом чихе
( в данном случае - попытка написать пост от своего имени, но без введенного пароля)
меняет перевод строки на пару 'rn', изрядно бесит деморализует.
----------- Это было в исходном посте --------
здравствуйте, в базе содержатся записи в двух простых таблицах.
Первая.
CREATE TABLE IF NOT EXISTS `a` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`description` varchar(100) NOT NULL,
`type` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
INSERT INTO `a` (`id`, `description`, `type`) VALUES
(1, 'Кол-во клапанов', '12v'),
(2, 'Кол-во клапанов', '24v'),
(3, 'Система зажигания', 'Трамблер'),
(4, 'Система зажигания', 'Катушка'),
(5, 'Кол-во распредвалов', 'SOHC'),
(6, 'Кол-во распредвалов', 'DOHC');
|
Вторая
CREATE TABLE IF NOT EXISTS `b` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`type_id` varchar(255) NOT NULL,
`engine` varchar(100) NOT NULL,
`modif` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8;
INSERT INTO `b` (`id`, `type_id`, `engine`, `modif`) VALUES
(1, '1', '6G72', '1'),
(2, '1', '6G72', '3'),
(3, '1', '6G72', '5'),
(5, '2', '6G72', '2'),
(6, '2', '6G72', '4'),
(7, '2', '6G72', '6');
|
Нужно вывести информацию в селекте вида
<select>
<option>12v : трамблер : SOHC</option>
<option>24v : катушка : DOHC</option>
</select>
|
Как я понимаю тут поможет group_concat?
Пишу с планшета, накидал запрос, поправьте пожалуйста...
$sql = "SELECT GROUP_CONCAT(DISTINCT b.type_id ORDER by b.type_id ASC SEPARATOR ' : ') AS types, a.id, a.type
FROM a
LEFT JOIN b ON a.id = b.modif";
|
| |
|
|
|
|
|
|
|
для: gofree
(26.10.2014 в 20:36)
| | Что то форум наковеркал... Извините исправить в данный момент не могу... | |
|
|
|
|
|
|
| здравствуйте, в базе содержатся записи в двух простых таблицах.rnПервая. rn
CREATE TABLE IF NOT EXISTS `a` (rn `id` int(4) NOT NULL AUTO_INCREMENT,rn `description` varchar(100) NOT NULL,rn `type` varchar(100) NOT NULL,rn PRIMARY KEY (`id`)rn) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;rnrnINSERT INTO `a` (`id`, `description`, `type`) VALUESrn(1, 'Кол-во клапанов', '12v'),rn(2, 'Кол-во клапанов', '24v'),rn(3, 'Система зажигания', 'Трамблер'),rn(4, 'Система зажигания', 'Катушка'),rn(5, 'Кол-во распредвалов', 'SOHC'),rn(6, 'Кол-во распредвалов', 'DOHC');
| rnrnВтораяrnrn
CREATE TABLE IF NOT EXISTS `b` (rn `id` int(4) NOT NULL AUTO_INCREMENT,rn `type_id` varchar(255) NOT NULL,rn `engine` varchar(100) NOT NULL,rn `modif` varchar(100) NOT NULL,rn PRIMARY KEY (`id`)rn) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8;rnrnINSERT INTO `b` (`id`, `type_id`, `engine`, `modif`) VALUESrn(1, '1', '6G72', '1'),rn(2, '1', '6G72', '3'),rn(3, '1', '6G72', '5'),rn(5, '2', '6G72', '2'),rn(6, '2', '6G72', '4'),rn(7, '2', '6G72', '6');rn
| rnrnНужно вывести информацию в селекте вида rn
<select>rn<option>12v : трамблер : SOHC</option>rn<option>24v : катушка : DOHC</option>rn</select>
| rnrnКак я понимаю тут поможет group_concat?rnПишу с планшета, накидал запрос, поправьте пожалуйста...rn
rn$sql = "SELECT GROUP_CONCAT(DISTINCT b.type_id ORDER by b.type_id ASC SEPARATOR ' : ') AS types, a.id, a.typern FROM arn LEFT JOIN b ON a.id = b.modif";rnrn
|
| |
|
|
| |
|