Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Матричный запрос


Автор: IZ@TOP 11.7.2005, 10:25
В общем есть две таблицы:

Код

# таблица с некими данными
create table cv_data (
  id int not null auto_increment,
  name varchar(100),
  primary key(id)
);

# таблица связывающая данные из первой таблицы
create table cv_bind (
  c_id,
  c_parent,
  primaray key(c_id, c_parent)
);

# Так вот, допустим есть у нас несколько записей в первой таблице:
insert into cv_data (`id`, `name`) values (1, 'colors'), (2, 'Red 100'), ('3, Green'), (4, 'Orange'),
(5, 'sizes'), (6, '100'), (7, '300'), (8, '500 green');

# и связка этих данных
insert into cv_bind (`c_id`, `c_parent`) values (2,1),(3,1),(4,1),(6,5),(7,5),(8,5),(2,5),(7,1);


Теперь представим что мы запросили все что связано с colors. Если мы пошлем запрос на выборку данных посредством связи с cv_bind где c_parent = 1, это нам даст записи с идентификаторами 2,3,4 и 7. Проблема в том, что мне нужно отобразить еще и другие связи, допустим если у нас запись привязана еще к какой либо записи, как в случае с 7 и 2 которые привзяаны к 1,5 и 5,1. Т.е. на выходе мы должны получить примерно такую таблицу:

Запрос colors
id, name, sub
2 Red 100 sizes
3 Green
4 Orange

Заранее спасибо.

Автор: DENNN 11.7.2005, 11:14
Ничего не понял.
Ты хочешь получить все записи,у которых c_parent = 1 - ты их получил через where.
Теперь ты хочешь найти с какими еще id связаны записи, которые связаны с c_parent = 1?
Проще наверное сделать create temporary table выбрать туда все с c_parent = 1, а затем из cv_bind выбирать те, у которых есть c_id из временной таблицы.

P.S. А зачем такие сложные связи?

Автор: IZ@TOP 11.7.2005, 12:38
DENNN, затем что структура разделов матричная.
Я сейчас пробую в два запроса сделать.

Автор: IZ@TOP 11.7.2005, 13:38
В общем обошлись несколько запросов.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)