|
|
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
labirint, ну типа того. Зато, выборка "отдай мне всех деток от заданного" - одним движением 6-го пальца левой-задней ноги. Аналогично "отдай мне всех предков заданного" = "дай мне тех, где я - потомок", а кроме этого, нет ограничений на количество предков (один потомок может быть деткой нескольких родителей!) Для каждого добавляемого узла надо делать предварительную выборку всех предков того узла, к которому он добавляется и добавлять на каждого предка тоже по записи... то есть количество вставляемых записей для узла 10-го уровня = 10 (тот, к которому добавляем и 9 его предков, если их по одному на узел - то есть "дерево"). ... делается легко через "insert ... (select дай предков заданного) union (заданный)". Кстати, этот запрос будет корректно добавлять потомка и в случае нескольких родителей (собственно ему пофиг сколько их там)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 14:29:42 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
labirint, почему-то у меня даже такое "выражение" (для пробы) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. вызывает ошибку. Мускул пишет Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 17:03:36 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
REPEAT может употребляться внутри функций/процедур/триггеров. А в приведенном коде ничего этого не видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 17:06:55 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
miksoftREPEAT может употребляться внутри функций/процедур/триггеров. А в приведенном коде ничего этого не видно. спасибо! а как в phpMyAdmin на вкладке SQL написать процедуру/функцию/триггер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 17:39:34 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
miksoft, :) потому что русским язуком писано "это внутренняя часть проце-дуры"... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 17:53:41 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
Arhat109, ну, а мне скажите - как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 18:40:53 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
labirint, пишу: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ошибка: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. помогите пожалуйста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 18:51:04 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
labirint, а теперь про DELIMITER забыли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 19:59:59 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
miksoft, спасибо, но я о нем даже и не знаю. Куда ставить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 20:43:29 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
miksoftlabirint, а теперь про DELIMITER забыли. Поставил delimiter - сработало! Ура!!!!!!! Спасибо!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 20:50:02 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
labirint, гм... оказалосб, что я допустил ошибку в коде процедуры. Как ее теперь исправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 20:59:35 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
labirintlabirint, гм... оказалосб, что я допустил ошибку в коде процедуры. Как ее теперь исправить? Все нашел. Спасибо! ... продолжение следует :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 21:16:50 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
что-то я туплю :( Arhat109labirint, ... делается легко через "insert ... (select дай предков заданного) union (заданный)". не пойму - как это составить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2013, 00:44:33 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
labirint, :) примерно так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Внешним селектом, насколько понимаю, можно не обрамлять. Привел для наглядности, ну и может Вам к юниону ещё чего объединить захочется... Вместо переменных можно подставлять сразу константные значения, если запрос формируется на клиенте и константы известны... или брать их откуда надо подселектами... короче, дерзайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2013, 07:24:08 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
Arhat109, если разрешается несколько родителей (ребра для НЕ деревьев!), то неплохо делать INSERT IGNORE... или ON DUPLICATE KEY UPDATE... и соответственно составной уникальный ключ на оба поля... тогда при попытке создать уже существующее ребро графа - оно будет или игнорироваться или вызывать соответствующие вашей задумке update. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2013, 07:29:02 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
Arhat109, огромная спасиба! Кое-что уже получается :) правильно ли я понял, что в строке Код: sql 1. вместо @dest_node тоже нужно делать подзапрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2013, 13:57:38 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
labirint, :) зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2013, 14:54:03 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
labirint, да..., написал так (где '$lid' - это mysql_insert_id(); после записи в основную таблицу): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. а Мускул не хочет добавлять несколько записей, еще и замечание делает :), мол подзапрос возвращает больше 1-й строки... А как же в таком случае записать все ребра? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2013, 15:02:49 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
labirint, :) не нужен там "подзапрос". Перечитайте ещё раз внимательно мой пост с этим примером... и тренируйтесь. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2013, 19:11:06 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
Arhat109labirint, :) не нужен там "подзапрос". Перечитайте ещё раз внимательно мой пост с этим примером... и тренируйтесь. :) ХМ... попробовал снова, действительно - не нужен, добавляет все ребра, а до этого точно такой же запрос добавлял только 2 записи: последнюю и предпоследнюю ну, да ладно, теперь работает - и Слава Богу! Arhat109, Вы мне очень помогли - огромное спасибо! Но это еще не все :) и если Вам не наскучило, прошу подсказать - куда думать дальше? это дерево - партнерская программа. Узел приглашает в структуру другие узлы - любое количество, но под ним могут записаться только 5 чел, остальные пишутся на уровень ниже - его детям: сначала 1-му - все 5, затем - 2-му и т.д. На текущей стадии еще можно поменять систему, например: сначала всем пятерым - 1-е дитя, потом всем - 2-е и т.д., если не получится по предыдущему варианту... или просто по 1 шт. - каждому "всем сестрам - по серьгам". Важно, чтобы запрос распознавал, что у дитяти еще не все запослнено и заполнял, учитывая, что эти дети также могут подписывать под себя новых и под своих детей по тем же правилам. Как заполнился уровень из этих пяти, а тот же родитель все зазывает и зазывает, следующие пишутся в 3-й уровень - его внукам и т.д. Хочется построить один запрос для такого способа построения структуры или, если не один, то хотя бы ограниченное число запросов. При этом есть еще небольшая вариация: когда у родителя заполняется 3-й уровень, т.е. 125 правнуков - он имеет право записать себе в 1-й уровень - 6-го ребенка и строить ему все уровни, как и предыдущим. Заполнил 5 уровней - пишет себе 7-го и ему строит структуру и т.д. - максимум - 9. Что скажете? Не бросите меня на произвол судьбы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2013, 00:20:48 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
labirint, :) брошу. Уж не обижайтесь. Но, а) мало чего понял в вашем описании (а глыбоко вникать - нет большого желания, своих задач хватает) б) вы уж оперделитесь: или только по 5 потомком или 6, 7 и так далее. А то, противоречивое условие (уже в этой части)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2013, 16:09:59 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
Arhat109labirint, :) брошу. Уж не обижайтесь. Но, это грустно... ну, ладно, Вы и так очень мне помогли, спасибо! Arhat109labirint, а) мало чего понял в вашем описании (а глыбоко вникать - нет большого желания, своих задач хватает) б) вы уж оперделитесь: или только по 5 потомком или 6, 7 и так далее. А то, противоречивое условие (уже в этой части)... Да, в общем-то б о льшая часть из этого уже получается, если будут затыки - спрошу конкретно. Успеха Вам! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2013, 16:26:13 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
trewlabirint, Древовидные структуры средствами MySQL читать Заметьте, мы сразу, при создании таблицы товаров, задаем связь между полем CatID таблицы товаров (Goods) и полем ID таблицы разделов (Catalog). Автор принял желаемое за действительное. Связь он, видите-ли, сразу задал, прямо в таблице, не отходя от кассы. Тогда зачем запрос вида SELECT g.* FROM Goods g WHERE CatID = 1; Такие факи только еще больше запутают читателя. Наиболее известные деревянные модели: nested set closure table materialized path Насколько я понял из обсуждения предлагалось второе. Так вот, уловка в том, что деревом может быть не вся база, а какая-то диспетчерская таблица. Все остальные в классической adjacency list model ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2013, 22:22:01 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
Надо бы уточнить. Это не связь он задал, автор фака, а выдал инструкцию приводу БД на сохранение целостности данных. Если выбранный привод (engine) кладет на такие инструкции (например как MyISAM) - приложение написанное с учетом подразумеваемых ограничений привода порушит все что сможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2013, 22:27:44 |
|
||
|
запрос теоретически возможен?
|
|||
|---|---|---|---|
|
#18+
deblogger, 1. Все-таки замечу что в факе, написно верно. И пример показан на связке id - parent_id, вполне корректный даже для MyIsam. Кстати, конкретно это ограничение там "в общем-то" и не нужно. Дерево создано на одной таблице... а уж с чем и зачем оно связано ключами - к сути примера не имеет никакого отношения. Из предложенных вами: nested set -- самый трудозатратный, объемный и медленный практически для любых случаев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 06:53:33 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38321302&tid=1834649]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
80ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 440ms |

| 0 / 0 |
