#postgresql
#postgresql
Вопрос:
у меня есть такие таблицы, и мне нужно отобразить продукты, которые были заказаны
create table customer (
id int primary key,
first_name varchar(100) not null,
last_name varchar(100) not null,
city varchar(100) null,
country varchar(100) null,
phone varchar(100) null
);
create table supplier (
id int primary key,
company_name varchar(100) not null,
contact_name varchar(100) null,
contact_title varchar(100) null,
city varchar(100) null,
country varchar(100) null,
phone varchar(100) null,
fax varchar(100) null
);
create table product (
id int primary key,
product_name varchar(100) not null,
unit_price decimal(12,2) null default 0,
package varchar(100) null,
is_discontinued boolean not null default false,
supplier_id int references supplier(id) not null
);
create table orders (
id int primary key,
order_date timestamp not null default now(),
order_number varchar(100) null,
total_amount decimal(12,2) null default 0,
customer_id int references customer(id) not null
);
create table order_item (
id int primary key,
unit_price decimal(12,2) not null default 0,
quantity int not null default 1,
order_id int references orders(id) not null,
product_id int references product(id) not null
);
Комментарии:
1. Совет: рассмотрите возможность использования
VARCHAR(255)
в качестве поля строкового типа общего назначения по умолчанию и переопределяйте его более длинными или более короткими ограничениями, только если у вас есть веская причина. Многие установки MySQL будут автоматически усекать любые данные, которые не подходят, что приводит к потере данных, жалобам пользователей и другим серьезным проблемам. Имена и адреса электронной почты довольно часто на удивление длинные, поэтому важно учитывать их.2. Вам нужны отдельные продукты, которые были заказаны?
Ответ №1:
Если вам нужны только product_name
те продукты, которые были заказаны, вы можете выполнить приведенный ниже sql. В нем участвуют только 2 таблицы.
select distinct p.product_name
from order_item o
join product p
on o.product_id = p.id
Комментарии:
1. спасибо)) можете ли вы мне помочь, пожалуйста, теперь мне нужно отобразить продукты, которые не были заказаны
2. Используйте
except
предложение между этой таблицей иproduct
таблицей.