Привет всем, надеюсь, все хорошо.Я все еще новичок в mysql, и я начинаю использовать функции JOIN и решаю проблему, которая включает в себя комбинацию из 3 таблиц.Я следовал синтаксису, который я нашел
ВЫБРАТЬ t1.col, t3.col ОТ таблицы1 присоединиться к таблице2 ВКЛ table1.primarykey = table2.foreignkey присоединиться к таблице3 ВКЛ table2.primarykey = table3.foreignkey
Вопросis:
"Найти название заказанного продукта и дату заказа всех продуктов, заказанных клиентом, с кодом клиента SAVEA и таким, что количество продукта равно 10."
Вот мое решение
SELECT CUSTOMER.CUSTOMER_CODE, ORDERS.ORDER_DATE, ORDER_DETAIL.PRODUCT_NAME, ORDER_DETAIL.QUANTITY
FROM ORDERS
JOIN CUSTOMER ON CUSTOMER.CUSTOMER_CODE = ORDERS.CUSTOMER_CODE
JOIN ORDER_DETAIL ON ORDERS.ORDER_ID = ORDER_DETAIL.ORDER_ID
WHERE ORDER_DETAIL.QUANTITY = '10';
и вот три таблицы, которые я использую, помечены.
ТАБЛИЦА КЛИЕНТОВ
CREATE TABLE CUSTOMER
(
CUSTOMER_CODE VARCHAR(5) NOT NULL,
COMPANY_NAME VARCHAR(40) NOT NULL,
CONTACT_NAME VARCHAR(30),
CONTACT_TITLE VARCHAR(30),
ADDRESS VARCHAR(60),
CITY VARCHAR(15),
REGION VARCHAR(15),
POSTAL_CODE VARCHAR(10),
COUNTRY VARCHAR(15),
PHONE VARCHAR(24),
FAX VARCHAR(24),
CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUSTOMER_CODE)
);
ТАБЛИЦА ЗАКАЗОВ
CREATE TABLE ORDERS
(
ORDER_ID DECIMAL(9) NOT NULL,
CUSTOMER_CODE VARCHAR(5) NOT NULL,
EMPLOYEE_ID DECIMAL(9) NOT NULL,
ORDER_DATE DATE NOT NULL,
REQUIRED_DATE DATE,
SHIPPED_DATE DATE,
SHIP_VIA VARCHAR(40),
FREIGHT DECIMAL(10,2) DEFAULT 0,
SHIP_NAME VARCHAR(40),
SHIP_ADDRESS VARCHAR(60),
SHIP_CITY VARCHAR(15),
SHIP_REGION VARCHAR(15),
SHIP_POSTAL_CODE VARCHAR(10),
SHIP_COUNTRY VARCHAR(15),
CONSTRAINT PK_ORDERS PRIMARY KEY (ORDER_ID),
CONSTRAINT FK_CUSTOMER_CODE FOREIGN KEY (CUSTOMER_CODE) REFERENCES CUSTOMER(CUSTOMER_CODE),
CONSTRAINT FK_EMPLOYEE_ID FOREIGN KEY (EMPLOYEE_ID) REFERENCES EMPLOYEE(EMPLOYEE_ID),
CONSTRAINT FK_SHIP_VIA FOREIGN KEY (SHIP_VIA) REFERENCES SHIPPER(COMPANY_NAME)
);
TABLE ORDER_DETAIL
CREATE TABLE ORDER_DETAIL
(
ORDER_ID DECIMAL(9) NOT NULL,
PRODUCT_NAME VARCHAR(40) NOT NULL,
UNIT_PRICE DECIMAL(10,2) NOT NULL DEFAULT 0,
QUANTITY DECIMAL(9) NOT NULL DEFAULT 1 ,
DISCOUNT DECIMAL(4,2) NOT NULL DEFAULT 0,
CONSTRAINT PK_ORDER_DETAIL PRIMARY KEY (ORDER_ID, PRODUCT_NAME),
CONSTRAINT FK_ORDER_ID FOREIGN KEY (ORDER_ID) REFERENCES ORDERS (ORDER_ID),
CONSTRAINT FK_PRODUCT_NAME FOREIGN KEY (PRODUCT_NAME) REFERENCES PRODUCT (PRODUCT_NAME),
CONSTRAINT CK_ORDER_DETAIL_UNIT_PRICE CHECK (UNIT_PRICE >= 0),
CONSTRAINT CK_ORDER_DETAIL_QUANTITY CHECK (QUANTITY > 0),
CONSTRAINT CK_ORDER_DETAIL_DISCOUNT CHECK (DISCOUNT between 0 and 1)
);
Точная ошибка, которую я получаю: ОШИБКА 1054 (42522) Неизвестный столбец «CUSTOMER_CODE» в «списке полей».Я считаю, что я придерживаюсь правильного синтаксиса, так что, возможно, это проблема с запятой или моим заказом.если кто-то может помочь, это будет высоко ценится