Автор Тема: Свързване на 2 бази от данни.  (Прочетена 1334 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

2SHAE

  • Newbie
  • *
  • Благодарности
  • -Казани: 3
  • -Получени: 0
  • Публикации: 22
Свързване на 2 бази от данни.
« -: 07 Февруари 2016, 00:45:52 »
Здравейте, имам две бази от данни. Едната е с име категории и има 14 уникални категории. Втората ми датабаза е с име продукти и съдържа различни продукти. Това което се опитвам да направя е да задам на един продукт няколко категории. В момента взимам категорията чрез $_GET и показвам всички продукти от тази категория. Трябва някак да направя обаче например "продукт1" да се показва и в категория 1 и в категория 2 и/или 3 и т.н. До сега не съм правил пободно нещо, можете ли да ми дадете някакви насоки? Благодаря.
"Screw you guys i am going home"

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Свързване на 2 бази от данни.
« Отговор #1 -: 07 Февруари 2016, 01:20:18 »
Различни бази данни или различни таблици, май по-скоро второто? Ще трябва да си промениш структурата и логиката, а именно ще ти трябва трета таблица която да изпълни връзката между категориите и продуктите. Нещо подобно на това

Код: MySQL
  1. mysql> DESC products_categories_pivot;
  2. +-------------+------------------+------+-----+---------+----------------+
  3. | Field       | Type             | Null | Key | Default | Extra          |
  4. +-------------+------------------+------+-----+---------+----------------+
  5. | id          | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
  6. | id_category | int(10) unsigned | NO   | MUL | NULL    |                |
  7. | id_product  | int(10) unsigned | NO   |     | NULL    |                |
  8. +-------------+------------------+------+-----+---------+----------------+
  9. 3 rows in set (0.00 sec)

В нея всеки запис представлява даден продукт в каква категория принадлежи.

Код: MySQL
  1. mysql> SELECT * FROM products_categories_pivot WHERE id_product = 1;
  2. +----+-------------+------------+
  3. | id | id_category | id_product |
  4. +----+-------------+------------+
  5. |  1 |           1 |          1 | # ПРОДУКТ 1 СЕ НАМИРА В КАТЕГОРИЯ 1
  6. |  2 |           2 |          1 | # ПРОДУКТ 1 СЕ НАМИРА В КАТЕГОРИЯ 2
  7. +----+-------------+------------+
  8. 2 rows in set (0.00 sec)

Изваждането става лесно с JOIN-ове, като join-ваш таблиците с категориите и продуктите:

Код: MySQL
  1. FROM products_categories_pivot
  2. LEFT JOIN products
  3.         ON products.id = products_categories_pivot.id_product
  4. LEFT JOIN categories
  5.         ON categories.id = products_categories_pivot.id_category
  6. WHERE id_product = 1;
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!