Databuild
Новичок
Выбор из 2-х таблиц данных
По порядку:
1. Есть две таблицы
CREATE TABLE shop_fields (
id int(11) NOT NULL auto_increment,
name text,
`type` enum('text','textarea') NOT NULL default 'text',
textarea_cols smallint(3) unsigned NOT NULL default '0',
textarea_rows smallint(3) unsigned NOT NULL default '0',
text_size smallint(3) unsigned NOT NULL default '0',
active tinyint(1) NOT NULL default '1',
pos smallint(3) unsigned NOT NULL default '1',
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
INSERT INTO shop_fields VALUES (1, 'Габариты', 'textarea', 50, 10, 50, 1, 2);
INSERT INTO shop_fields VALUES (2, 'Мощность', 'text', 0, 0, 50, 1, 2);
INSERT INTO shop_fields VALUES (3, 'Доп. описание', 'textarea', 50, 10, 0, 1, 1);
CREATE TABLE shop_fields_value (
idfield int(11) NOT NULL default '0',
id_tovara int(11) NOT NULL default '0',
active tinyint(1) NOT NULL default '1',
val text,
PRIMARY KEY (idfield,id_tovara)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
INSERT INTO shop_fields_value VALUES (1, 263, 1, '200x200x50');
INSERT INTO shop_fields_value VALUES (2, 263, 1, '300');
INSERT INTO shop_fields_value VALUES (1, 250, 1, 'Cool');
___________________________________________
Т.е. две таблицы одна дополнительные поля, другая их значения:
Далее мой запрос:
$sql2 = $db->Query("SELECT
a.*,
b.*
FROM
" . PREFIX . "_shop_fields_value as a,
" . PREFIX . "_shop_fields as b
WHERE
a.id_tovara = '$_REQUEST[id]' AND
b.active = 1 AND
b.id = a.idtovara
");
_____________________________
Суть проблемы:
Запрос (id=263) вытащит только поля (Габариты и Мощность )и их значения
(1, 263, 1, '200x200x50') и (2, 263, 1, '300') и это понятно,
но мне надо чтобы в массив еще и попали остальные поля из таблицы fields, т.е. Доп. описание с пустыми значениями!
Как это сделать красиво, ума не приложу.
По порядку:
1. Есть две таблицы
CREATE TABLE shop_fields (
id int(11) NOT NULL auto_increment,
name text,
`type` enum('text','textarea') NOT NULL default 'text',
textarea_cols smallint(3) unsigned NOT NULL default '0',
textarea_rows smallint(3) unsigned NOT NULL default '0',
text_size smallint(3) unsigned NOT NULL default '0',
active tinyint(1) NOT NULL default '1',
pos smallint(3) unsigned NOT NULL default '1',
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
INSERT INTO shop_fields VALUES (1, 'Габариты', 'textarea', 50, 10, 50, 1, 2);
INSERT INTO shop_fields VALUES (2, 'Мощность', 'text', 0, 0, 50, 1, 2);
INSERT INTO shop_fields VALUES (3, 'Доп. описание', 'textarea', 50, 10, 0, 1, 1);
CREATE TABLE shop_fields_value (
idfield int(11) NOT NULL default '0',
id_tovara int(11) NOT NULL default '0',
active tinyint(1) NOT NULL default '1',
val text,
PRIMARY KEY (idfield,id_tovara)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
INSERT INTO shop_fields_value VALUES (1, 263, 1, '200x200x50');
INSERT INTO shop_fields_value VALUES (2, 263, 1, '300');
INSERT INTO shop_fields_value VALUES (1, 250, 1, 'Cool');
___________________________________________
Т.е. две таблицы одна дополнительные поля, другая их значения:
Далее мой запрос:
$sql2 = $db->Query("SELECT
a.*,
b.*
FROM
" . PREFIX . "_shop_fields_value as a,
" . PREFIX . "_shop_fields as b
WHERE
a.id_tovara = '$_REQUEST[id]' AND
b.active = 1 AND
b.id = a.idtovara
");
_____________________________
Суть проблемы:
Запрос (id=263) вытащит только поля (Габариты и Мощность )и их значения
(1, 263, 1, '200x200x50') и (2, 263, 1, '300') и это понятно,
но мне надо чтобы в массив еще и попали остальные поля из таблицы fields, т.е. Доп. описание с пустыми значениями!
Как это сделать красиво, ума не приложу.