30.05.2020, 22:23 [+3 UTC]
в нашей команде: 4 575 чел. | участники онлайн: 1 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.89 (25.04.2020)
JS-v.1.45 | CSS-v.3.39

Общие новости:
13.04.2020, 00:02

Форум:
29.05.2020, 13:47

Последний вопрос:
30.05.2020, 17:05
Всего: 152529

Последний ответ:
30.05.2020, 16:47
Всего: 260219

Последняя рассылка:
30.05.2020, 17:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
22.10.2009, 13:00 »
Спиридонов Данил Сергеевич
Подробно и точно! [вопрос № 173441, ответ № 255707]
04.02.2011, 20:18 »
lamed
Большое спасибо за помощь, попробую приобрести. С уважением [вопрос № 182097, ответ № 265720]
08.04.2020, 15:36 »
mlesha17
SAW, спасибо большое. Если, что, обращусь, ок? [вопрос № 198180, ответ № 279655]

РАЗДЕЛ • Базы данных

Установка и настройка серверов баз данных, таблицы и запросы.

[администратор рассылки: Коцюрбенко Алексей Владимирович (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Старший модератор
Рейтинг: 1568
solowey
Статус: Профессионал
Рейтинг: 421
Delph
Статус: 3-й класс
Рейтинг: 316

Перейти к консультации №:
 

Консультация онлайн # 70944
Раздел: • Базы данных
Автор вопроса: Golden Spider
Отправлена: 14.01.2007, 21:47
Поступило ответов: 2

Здраствуйте уважаемые эксперты!

Вот такой вопрос:
В базе есть таблица cats такого типа:
id (auto_inscrement) title parent

В не содержаться названия категорий и их подкатегории причём категории имеют parent=0, а подкатегории parent="id основной категории".

Ести ещё одна таблица test:
id(a_i) title cats

В поле cats содержаться id номера подкатегорий в таком виде +id1++id2++id3+...

Т.е. для получения количества записей из второй таблицы, ссылающихся на какую либо подкатегоорию из первой я делал такоз запрос:

1) SELECT count(id) FROM test WHERE cats LIKE "%+'.$id.'+%", где $id-номер подкатегории из первой :)
Итак собственно вопрос!

Моя задача получить кол-во (а потом и извлечь) ОСНОВНЫХ категорий у которых хотя-бы на одну подкатегорию ссылается хоть-бы одна запись из второй таблицы ( см 1. ).

Как сделать такое условие отбора?

Состояние: Консультация закрыта

Ответ # 136532 от dianacode

доброе время суток, Golden Spider

ужас как сложно... ) а мануалы по проектированию в реляционных субд вам не попадались ? ;)

или это особенность программного кода, который работает с этой структурой ?

так или иначе - попробуйте вариант с перепроектированием модели, ну, к примеру, добавьте дополнительную вспомогательную таблицу, вообщем решение походит на вот это:

create table cats(
id int unsigned not null auto_increment,
parent int unsigned not null default 0,
title varchar(50)
);

create table test(
id int unsigned not null auto_increment,
title varchar(50)
);

create table cats_test(
cats_test_id int unsigned not null auto_increment,
test_id int not null,
cats_id int not null
);

далее, если нам нужно добавить ассоциацию группы котов )) к какой-либо записи из test, делаем так:
insert into cats_test_id values(0, 1, 1);
потом ещё кот
insert into cats_test_id values(0, 1, 2);
а потом ещё стадо котов )))
insert into cats_test_id values(0, 1, 3);
insert into cats_test_id values(0, 1, 4);
insert into cats_test_id values(0, 1, 5);

и так сколько угодно котов можно ассоциировать с записью в таблице test

ну и селект по такой таблице делать - одно удовольствие -
select count(*) from cats_test where test_id=258;

так вы посчитаете количество котов, которые должны быть ассоциированы с первой записью таблицы test ^_^

с уважением, удачи


Консультировал: dianacode
Дата отправки: 14.01.2007, 23:39

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Здравствуйте, Golden Spider!
Уважаемая dianacode несомненно права: создавать такие структуры это извините попахивает особо тяжкими извращениями.
Но все-таки составить такой запрос можно, хоть это и страшно:
Select ct.* from cats ct, tests tst, (select count() as cnt from tests t, cats с where t.cats LIKE "%+'.$c.id.'+%" and c.id in (select id from cats c1 where c1.parent=ct.id)) incl where ct.parent=0 and incl.cnt>0
Под рукой нет никакого sql executor'а - проверить на ситаксис не получиться


Консультировал: Tek
Дата отправки: 15.01.2007, 10:28

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 70944
dianacode

# 1

= общий = | 16.01.2007, 11:46

^_^ ошибка подкралась незаметно insert into cats_test_id values(0, 1, 5); и им подобным следует читать как: insert into cats_test values(0, 1, 5);

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.17677 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.89 от 25.04.2020
Версия JS: 1.45 | Версия CSS: 3.39