Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите с запросом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
tato
Отправлено: 18 Апреля, 2013 - 10:04:03
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




Есть 2 таблици, в одной позиции во 2 категории у каждой позиции есть ключик категории



в табоице категорий есть поле childs геде строкой через запятую перечислены айдишники



Надо зная id каьегории выбрать все позиция входящие в нее и ее потомков т.е. тех кто записан в childs.

// Код для примера, как оно должно быть, абстрактно конечно
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT * FROM position p WHERE p.category_id IN (
  3.  
  4.     SELECT c.id FROM category c WHERE c.id IN (
  5.         SELECT c2.childs FROM category c2 WHERE c2.id = 123
  6.     )
  7.  
  8. )
  9.  


Всю голову сломал, зарание спасибо


-----
просто ?: сложно
 
 Top
Мелкий Супермодератор
Отправлено: 18 Апреля, 2013 - 10:07:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




tato пишет:
поле childs геде строкой через запятую перечислены айдишники

Выкиньте эту гадость.
И сделайте нормальную таблицу-связку.


-----
PostgreSQL DBA
 
 Top
imya
Отправлено: 18 Апреля, 2013 - 10:11:20
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




Дерево раскрывать надо, cte.


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
tato
Отправлено: 18 Апреля, 2013 - 11:57:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




Мелкий, Я бы с удовольсьвием, да низя...


-----
просто ?: сложно
 
 Top
Мелкий Супермодератор
Отправлено: 18 Апреля, 2013 - 12:15:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




tato пишет:
да низя...

Ну и решений нормальных нет.
Или сделать таблицу-связку (если много старого кода - можно навесить несколько триггеров)
Или костылить на стороне приложения.
Ну или посмотреть в сторону хранимых процедур

imya пишет:
Дерево раскрывать надо, cte.

Вы о Common Table Expressions? Боюсь, у tato mysql, а не постгрес.


-----
PostgreSQL DBA
 
 Top
imya
Отправлено: 18 Апреля, 2013 - 16:40:54
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




Мелкий пишет:
Вы о Common Table Expressions? Боюсь, у tato mysql, а не постгрес.


Да, именно.

Печально конечно, что в mysql нельзя подобного)

А я вообще думал о transact )


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
tato
Отправлено: 19 Апреля, 2013 - 05:06:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




Да мускул. Пилю костыль, что поделать.


-----
просто ?: сложно
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB