|
|
|
| Здравсвуйте господа. Работал с битриксом и мне понравилась идея инфоблоков.
Тема такая что в одной таблице хранятся эллементы с стандартным набором полей: например ид, дата создания, имя, описание и тд.
В другой перечень доп. полей например относящиеся к определеному инф.блоку.
В третьей список значений доп. полей относящиеся к определенному эллементу и полю.
Хотелось бы знать каким образом можно вытащить эллементы из первой при этом узнать список доп. полей и из ходя из этого вытащить значения полей из третьей В ОДНОМ ЗАПРОСЕ.???
пока на ум пришло решение в два запроса:1. узнаем список доп. полей из 2-й табл..2 констуируем запрос и выбираем значения из 1-ой и 3-й. | |
|
|
|
|
|
|
|
для: dimaxz
(18.02.2010 в 08:12)
| | структуру таблиц (дамп) приведите, пожалуйста.
И начальные данные запроса. | |
|
|
|
|
|
|
|
для: Trianon
(18.02.2010 в 08:22)
| | таблица iblock (Список инфо блоков)
id | name
1 | Новости
2 | Товары
таблица ellement (список эллементов)
id | iblock_id | name | data_create | text
1 | 1 | Новость дня | 10-10-2010 | подроб текст..
2 | 1 | Новость еще | 05-10-2010 | подробно..
3 | 2 | Заколка | 01-11-2010 | описание товара
Таблица fields список доп. полей
id | iblock_id | code | name | type
1 | 1 | editor | Редактор | INT
2 | 2 | price | Цена | INT
3 | 2 | art | Артикул | TEXT
Таблица preperties значений полей (22-Иванов, 23-Петров)
id | ellement_id | field_id | value_int | value_text
1 | 1 | 1 | 22 | NULL
2 | 2 | 1 | 23 | NULL
3 | 3 | 2 | 240 | NULL
4 | 3 | 3 | NULL | AR25-JH | |
|
|
|
|
|
|
|
для: Trianon
(18.02.2010 в 08:22)
| | думаю тема понятна, используя в арсенале всего эти таблицы можно реализовывать новые элементы без создания таблиц, универсальность! | |
|
|
|
|
|
|
|
для: dimaxz
(18.02.2010 в 08:56)
| | Вы знаете, что такое дамп?
Дамп это когда show create table (и далее несколько слов без падежей) | |
|
|
|
|
|
|
|
для: Trianon
(18.02.2010 в 09:05)
| | а так нельзя? ( | |
|
|
|
|
|
|
|
для: dimaxz
(18.02.2010 в 10:41)
| | Другими словами, вместо того, чтобы предоставить естественную возможность Вашу проблему порешать - создать таблицы и попробовать запросы, Вы предлагаете лишь посмотреть на картинку умозрительно?
Посмотрел. Вы довольны? | |
|
|
|
|
|
|
|
для: TrianoN
(18.02.2010 в 11:03)
| |
CREATE TABLE pz2.pz_iblock_copy(
id INT (11) NOT NULL AUTO_INCREMENT,
NAME VARCHAR (255) DEFAULT NULL,
`COMMENT` VARCHAR (255) DEFAULT NULL,
PRIMARY KEY (id)
)
ENGINE = MYISAM
AUTO_INCREMENT = 3
CHARACTER SET cp1251
COLLATE cp1251_general_ci;
|
CREATE TABLE pz2.pz_iblock_element_copy(
iblock_element_id INT (11) NOT NULL AUTO_INCREMENT,
date_create DATETIME DEFAULT NULL,
created_by INT (11) DEFAULT NULL,
iblock_id INT (11) NOT NULL DEFAULT 1,
name VARCHAR (255) DEFAULT NULL,
detail_text LONGTEXT DEFAULT NULL,
PRIMARY KEY (iblock_element_id)
)
ENGINE = MYISAM
AUTO_INCREMENT = 12
CHARACTER SET cp1251
COLLATE cp1251_general_ci;
|
CREATE TABLE pz2.pz_iblock_field_copy(
id INT (11) NOT NULL AUTO_INCREMENT,
iblock_id INT (11) DEFAULT NULL,
code VARCHAR (50) DEFAULT NULL,
name VARCHAR (100) DEFAULT NULL,
type INT (11) DEFAULT NULL,
PRIMARY KEY (id)
)
ENGINE = MYISAM
AUTO_INCREMENT = 5
CHARACTER SET cp1251
COLLATE cp1251_general_ci;
|
CREATE TABLE pz2.pz_iblock_element_property_copy(
id INT (11) NOT NULL AUTO_INCREMENT,
element_id INT (11) DEFAULT NULL,
field_id INT (11) DEFAULT NULL,
value_int INT (11) DEFAULT NULL,
value_text TEXT DEFAULT NULL,
PRIMARY KEY (id)
)
ENGINE = MYISAM
AUTO_INCREMENT = 1
CHARACTER SET cp1251
COLLATE cp1251_general_ci;
|
| |
|
|
|
|
|
|
|
для: dimaxz
(18.02.2010 в 11:43)
| | Как-то не видно, зачем бы здесь именно один запрос...
А так, как Вы описали - поля одним, свойства и значения - другим, вполне себе.
Странно, правда, что чужие ключи допускают неопределенные значения (NULL)
element_id INT (11) DEFAULT NULL,
field_id INT (11) DEFAULT NULL,
но, возможно, это для задания умолчаний... | |
|
|
|
|
|
|
|
для: Trianon
(18.02.2010 в 13:43)
| | цель одна вывести данные из таблицы elements с учетом определенного инфоблока (пример Товары )только прицепом надо захватить еще и поля из таблицы element_property
должно получится:
3| Заколка|01-11-2010|описание товара|240 | AR25-JH | |
|
|
|
|
|
|
|
для: dimaxz
(18.02.2010 в 13:50)
| | ответа на вопрос так и не получил | |
|
|
|
|
|
|
|
для: dimaxz
(19.02.2010 в 07:53)
| | так еще дамп данных неплохо было бы привести.
На чем запросы-то проверять?
И входящие параметры . Номер блока = 2 ? | |
|
|
|
|
|
|
|
для: Trianon
(19.02.2010 в 10:02)
| | для iblock_copy
INSERT INTO pz_iblock_copy VALUES (1, 'Задачи', 'тип задачи');
INSERT INTO pz_iblock_copy VALUES (2, 'Шаблоны', 'здесь все шаблоны');
|
| |
|
|
|
|
|
|
|
для: Trianon
(19.02.2010 в 10:02)
| | для iblock_element
INSERT INTO pz_iblock_element_copy VALUES (1, '2010-02-05 00:00:00', 4, 1, 'Проверка', 'текст');
INSERT INTO pz_iblock_element_copy VALUES (11, '0001-01-17 00:00:00', 4, 2, 'Шаблон1', NULL);
|
| |
|
|
|
|
|
|
|
для: Trianon
(19.02.2010 в 10:02)
| | список полей инф. блока
INSERT INTO pz_iblock_field_copy VALUES (1, 1, 'opisanie', 'Описание', 1);
INSERT INTO pz_iblock_field_copy VALUES (2, 1, 'avtor', 'Автор', 2);
INSERT INTO pz_iblock_field_copy VALUES (3, 1, 'comment', 'Комментарий', 1);
INSERT INTO pz_iblock_field_copy VALUES (4, 2, 'img', 'Фото', 1);
|
| |
|
|
|
|
|
|
|
для: Trianon
(19.02.2010 в 10:02)
| | Таблица доп полей эллементов
INSERT INTO pz_iblock_element_property_copy VALUES (1, 1, 1, NULL,'описание');
INSERT INTO pz_iblock_element_property_copy VALUES (2, 1, 2, 10, NULL);
INSERT INTO pz_iblock_element_property_copy VALUES (3, 1, 3, NULL, 'еще текст');
|
| |
|
|
|
|
|
|
|
для: Trianon
(19.02.2010 в 10:02)
| | тема актуальна | |
|
|
|