Савелей
Новичок
Запрос с group by
Есть две таблицы ( фирмы, товары ) нужно из таблицы table_main
получить единожды строки для каждой фирмы где одинаковый model_prefix (который больше 2 символов) и число фирм в которых одинаковый model_prefix.
ниже привел свой запрос но у меня есть сомнения что это правильно, может есть варианты
лучше?
1) таблица - table_firm;
DROP TABLE IF EXISTS table_firm;
CREATE TABLE `table_firm` (
`firm_idx` int(11) NOT NULL auto_increment,
`firm_name` varchar(64) NOT NULL default '',
`type` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`firm_idx`),
KEY `idx_type` (`type`)
)
2) таблица - table_main;
DROP TABLE IF EXISTS table_main;
CREATE TABLE `table_main` (
`model_static_id` varchar(255) NOT NULL default '',
`model_title` varchar(255) NOT NULL default '',
`model_prefix` varchar(255) NOT NULL default '',
`firm_id` int(11) default '0',
`model_date_add` datetime NOT NULL default '0000-00-00 00:00:00',
UNIQUE KEY `idx_model_static` (`model_static_id`),
KEY `idx_firm_id` (`firm_id`),
KEY `idx_model_prefix` (`model_prefix`),
FULLTEXT KEY `full_text` (`model_title`)
)
Есть две таблицы ( фирмы, товары ) нужно из таблицы table_main
получить единожды строки для каждой фирмы где одинаковый model_prefix (который больше 2 символов) и число фирм в которых одинаковый model_prefix.
ниже привел свой запрос но у меня есть сомнения что это правильно, может есть варианты
лучше?
1) таблица - table_firm;
DROP TABLE IF EXISTS table_firm;
CREATE TABLE `table_firm` (
`firm_idx` int(11) NOT NULL auto_increment,
`firm_name` varchar(64) NOT NULL default '',
`type` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`firm_idx`),
KEY `idx_type` (`type`)
)
2) таблица - table_main;
DROP TABLE IF EXISTS table_main;
CREATE TABLE `table_main` (
`model_static_id` varchar(255) NOT NULL default '',
`model_title` varchar(255) NOT NULL default '',
`model_prefix` varchar(255) NOT NULL default '',
`firm_id` int(11) default '0',
`model_date_add` datetime NOT NULL default '0000-00-00 00:00:00',
UNIQUE KEY `idx_model_static` (`model_static_id`),
KEY `idx_firm_id` (`firm_id`),
KEY `idx_model_prefix` (`model_prefix`),
FULLTEXT KEY `full_text` (`model_title`)
)
PHP:
select *, count(distinct a.firm_idx) as cnt from table_main m, table_firm a where
m.firm_id=a.firm_idx and length(model_prefix) > 2
group by m.model_prefix