- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева

В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Господа здравствуйте. Помогите реализовать sql запрос. Суть:
Есть товар, у него 2 параметра в таблице:
/***Артикул***/ /***АртикулРодителя***/
А123 ------------------------ 0
А3423------------------------ А123
П3434 ------------------------ А123
Р43243 ------------------------ А123
Т.е. если мы вводим А123, нам должно найти этот товар и все подчиненные, если мы вводим один из подчиненных, вывести родитель и все подчиненные этого родителя. Могз сломал себе, как это красиво сделать.
Какая система управления базами данных? mysql, orale, mssql, informix? Дерево связей только два уровня?
Какая система управления базами данных? mysql, orale, mssql, informix? Дерево связей только два уровня?
mysql
да верно, 2 уровня
Одним запросом наверное выйдет громоздко, я бы лучше разбил на два - первый определяет уровень в второй собирает необходимые данные, агрегатных ф-ций у mysql насколько я помню нет.
Или сделать через динамический SQL
---------- Добавлено 20.09.2013 в 13:20 ----------
select * from product p where p.artikul = 'А123' and p.artikul_parent = '0'
union all
select * from product p where p.artikul_parent = 'А123'
union all
select p2.* from product p1, product p2 where p1.artikul_parent = p2.artikul and p1.artikul = 'А123'
union all
select p1.* from product p1, product p2 where p1.artikul_parent = p2.artikul_parent and p2.artikul = 'А123'
Но наверное любой администратор баз данных убъет за такое.
Ошибка Unknown column 'p1.artikul_parent' in 'where clause'
Ага... Видимо вы не очень дружите с базами данных... Я дал пример, где имена таблиц и полей нужно заменить на ваши. вы дали только два типа названия поля
/***Артикул***/
/***АртикулРодителя***/
хотя скорее всего они другие, а название таблицы не давали вообще!
---------- Добавлено 20.09.2013 в 13:47 ----------
В любом случае, лучше сначала определить какаой уровень у записи с указаным артикулом, потом выполнить два запроса с объединением. Так выходит в сумме 3 запроса, а в примере который привел я - 4.
Так же не совсем понятна фраза "красиво". Для баз данных такого понятия не существует, там есть только понятие быстро.
Про имена полей и т.д. опустим. Если использую эти запросы
select * from product p where p.artikul = 'А123' and p.artikul_parent = '0'
union all
select * from product p where p.artikul_parent = 'А123'
union all
select p2.* from product p1, product p2 where p1.artikul_parent = p2.artikul and p1.artikul = 'А123'
то работает след. образом:
если вводим родителя, то получаем его и всех подчиненных
а если вводим одного из подчиненных то получаем только родителя, а еще нужно как то получить и всех подчиненных этого родителя
За выборку, если вводим подчиненные отвечают два последний подзапроса
select p2.* from product p1, product p2 where p1.artikul_parent = p2.artikul and p1.artikul = 'А123'
union all
select p1.* from product p1, product p2 where p1.artikul_parent = p2.artikul_parent and p2.artikul = 'А123'
первый
по идее находит ролителявторой
- должен выдать подчиненных с таким же родителемВсе еще актуально, т.к. если вводить родителя в этот запрос, валиться много лишнего
Этот SQL-запрос берет товары c fhnbrekjv 'А123' и отдаёт все товары с такими же родительскими артикулами. Может вы неверно преобразовали его под свои таблицы и поля.