- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть несколько групп товаров, например ноутбуки и телефоны.
У них общая таблица "articles", в которой есть:
id
name
manufacturer
...
У каждой группы товаров есть свои параметры, которые хранятся в отдельных таблицах.
Например, у телефонов это (полифония, дисплей, размер, вес и т.д.).
У ноутбуков это (дисковод, размер экрана, usb порты и т.д.).
Получается, что таблицу параметров мы связываем с общей таблицей один-к-одному по полю id.
Как выбрать данные о товаре из общей таблицы и таблицы параметров имея лишь ID?
Неужели единственный выход - это создать дополнительное поле в общей таблице и заносить туда названия таблиц?
Этот вариант будет более экономичный в плане размера БД (в сравнении с Вашим вариантом), но добавит +1 запрос. Для того что бы убрать лишний запрос можно попробовать "извращнуться" с наименованием таблиц параметров численными именами... т.е. "название таблицы параметров" = group_id = 1 :-) ... но в целом Вы правы - выбирая данные из таблицы нужно знать её название.
SELECT * FROM catalog LEFT JOIN group ON (catalog.group_id=group.id)
Из двух таблиц одним заросом данные по одному id.
Или что вы имеете ввиду?
Brand from Amber, в обоих случаях это связь не поле-поле, а поле-таблица, целостность которой никак не может быть проконтролирована средствами mysql!?
prometex, ну... триггеры (выполняющиеся при удалении товара из таблицы articles), думаю, тут помогут.
Brand from Amber добавил 16.06.2008 в 23:43
SELECT * FROM catalog LEFT JOIN group ON (catalog.group_id=group.id)
Если не сложно, не могли бы Вы прокомментировать работу данного запроса... т.е. как он работает (поэтапно и на примерах) ? 🙄
Если не сложно, не могли бы Вы прокомментировать работу данного запроса... т.е. как он работает (поэтапно и на примерах) ? 🙄
SELECT * FROM catalog - выбрать все поля из таблички catalog
LEFT JOIN group - а также таблички group
ON (catalog.group_id=group.id) - там где и в скобочках условие:
в таблице catalog поле group_id совпадает с полем id таблицы group.
Таким образом в одной строке мы получаем записи из таблицы catalog и соответствующую группе полную информацию из второй таблички.
Это очень на пальцах, читайте лучше документацию, она есть.
DenisR, спасибо большое, а теперь внимательно прочитайте первый пост и сопоставьте ваше "LEFT JOIN group - а также таблички group" и "У каждой группы товаров есть свои параметры, которые хранятся в отдельных таблицах".
Подсказка - имя таблицы параметров неизвестно (оно можеть быть group, group1, ... groupN), но id товара в этих таблицах не повторяется.
Подсказка - имя таблицы параметров неизвестно (оно можеть быть group, group1, ... groupN), но id товара в этих таблицах не повторяется.
кто такое извращение придумал? Нормализуйте базу и не парьте мозги:
http://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D0%B0
кто такое извращение придумал? Нормализуйте базу и не парьте мозги:
Как раз этим и занимемся. Какое предложение то?
prometex,
вынести все параметры в одну таблицу, где отдельным полем будет соответственно ID товара.
prometex,
вынести все параметры в одну таблицу, где отдельным полем будет соответственно ID товара.
Если взять 50 груп товаров, и у каждой группы по 20 параметров, то получится таблица параметров у которой будет 1000 полей. При вставке данных одного товара заполняются только 20 полей - остальные 880 останутся пустыми?