Как я могу получить элемент из базы по параметру, используя дополнительные таблицы? - PullRequest
0 голосов
/ 12 октября 2018

Я начинаю работать с базой данных, возник вопрос.Я пытаюсь получить элемент из таблицы продуктов по имени, используя этот запрос.Мне нужно использовать JOIN, так как моя таблица привязана к другим.

ВЫБРАТЬ * из продукта ГДЕ pName = '45 -DAVID 'присоединиться к product_category в product.product_category_id = product_category.id присоединиться к company_manufacturer_product на product.company_manufacturer_product_id = company_manufacturer_product_id * 100 * * 100

5Но пока я получаю эту ошибку: ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'join product_category on product.product_category_id = product_category.id join ' at line 1

Мой сценарий БД:

create table company_manufacturer_product(
  id int not null unique AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(30) not null unique
);

INSERT INTO company_manufacturer_product(id, name) VALUES (default, 'Adidas');
INSERT INTO company_manufacturer_product(id, name) VALUES (default, 'Collins');
INSERT INTO company_manufacturer_product(id, name) VALUES (default, 'Luis Vuitton');

create table product_category(
  id int not null unique AUTO_INCREMENT PRIMARY KEY,
  cName VARCHAR(30) not null unique
);

INSERT INTO product_category (id, cName) VALUES (default, 'jeans');
INSERT INTO product_category (id, cName) VALUES (default, 'sweatshirts');
INSERT INTO product_category (id, cName) VALUES (default, 'accessories');
INSERT INTO product_category (id, cName) VALUES (default, 'jackets');

create table product(
  id int not null unique AUTO_INCREMENT PRIMARY KEY,
  pName VARCHAR(30) not null,
  pSize VARCHAR(3) not null,
  price DECIMAL(6, 2) not null,
  color VARCHAR(30) not null,
  imageName VARCHAR(255) not null,
  company_manufacturer_product_id int not null,
  product_category_id int not null,
  KEY cmp_company_manufacturer_product_id(company_manufacturer_product_id),
  KEY pc_product_category_id(product_category_id),
  CONSTRAINT cmp_company_manufacturer_product_id FOREIGN KEY(company_manufacturer_product_id) references company_manufacturer_product(id),
  CONSTRAINT pc_product_category_id FOREIGN KEY(product_category_id) REFERENCES product_category(id)
);

INSERT INTO product (id, pName, pSize, price, color, imageName, company_manufacturer_product_id, product_category_id) VALUES (default, 'SST_TRACK_JACKET', 'M', 75.5, 'red', '1.png', 1, 4);
INSERT INTO product (id, pName, pSize, price, color, imageName, company_manufacturer_product_id, product_category_id) VALUES (default, '45-DAVID', 'L', 100.00, 'blue', '2.png', 2, 1);
INSERT INTO product (id, pName, pSize, price, color, imageName, company_manufacturer_product_id, product_category_id) VALUES (default, 'ALLIANCE-SUNGLASSES', 'S', 810.00, 'black', '3.png', 3, 3);
INSERT INTO product (id, pName, pSize, price, color, imageName, company_manufacturer_product_id, product_category_id) VALUES (default, 'SWEATSHIRTS-228', 'XL', 120.20, 'blue', '4.png', 2, 2);
INSERT INTO product (id, pName, pSize, price, color, imageName, company_manufacturer_product_id, product_category_id) VALUES (default, 'TREFOIL HOODIE', 'M', 75.10, 'white', 'TREFOIL_HOODIE.png', 1, 2);
INSERT INTO product (id, pName, pSize, price, color, imageName, company_manufacturer_product_id, product_category_id) VALUES (default, 'SPLIT OVERSIZED JACKET', 'L', 2930.30, 'grey', 'SPLIT_OVERSIZED_JACKET.png', 3, 4);
INSERT INTO product (id, pName, pSize, price, color, imageName, company_manufacturer_product_id, product_category_id) VALUES (default, 'PROCESS_SP1 WATCH', 'S', 75.0, 'red', 'PROCESS_SP1_WATCH.png', 1, 3);
INSERT INTO product (id, pName, pSize, price, color, imageName, company_manufacturer_product_id, product_category_id) VALUES (default, 'CJEAN30190', 'XL', 69.50, 'blue', 'CJEAN30190.png', 2, 1);
INSERT INTO product (id, pName, pSize, price, color, imageName, company_manufacturer_product_id, product_category_id) VALUES (default, 'NEON MONOGRAM SWEATER', 'M', 765.50, 'neon', 'NEON_MONOGRAM_SWEATER.png', 3, 4);

Что я делаю не так и как я могу это исправить?Если я не укажу параметры, то все работает хорошо.

1 Ответ

0 голосов
/ 12 октября 2018

Некоторые сведения о запросах и SQL могут быть полезны для чтения.

Запрос всегда такой:

SELECT
  MyCols
FROM 
 MyTable1
JOIN
 OtherTable2
WHERE
 myCondition

Кроме того, старайтесь всегда указывать, является ли он INNER JOIN или LEFT JOIN, легче читать запрос и быстро его понимать.

Итак, по вашему запросу:

SELECT * 
FROM product 
INNER JOIN product_category on product.product_category_id = product_category.id
INNER JOIN company_manufacturer_product
   on product.company_manufacturer_product_id=company_manufacturer_product.id
WHERE pName='45-DAVID'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...