我为练习做出正确的选择时遇到了问题:
我创建了两个表: 1.客户 2.订单
广告。 1
CREATE TABLE public."Customer"
(
id integer NOT NULL DEFAULT nextval('"Customer_id_seq"'::regclass),
name text NOT NULL,
surname text NOT NULL,
address text NOT NULL,
email text NOT NULL,
password text NOT NULL,
CONSTRAINT "Customer_pkey" PRIMARY KEY (id),
CONSTRAINT "Customer_email_key" UNIQUE (email)
)
ad.2
CREATE TABLE public."Order"
(
id integer NOT NULL DEFAULT nextval('"Order_id_seq"'::regclass),
customer_id integer NOT NULL,
item_list text,
order_date date,
execution_date date,
done boolean DEFAULT false,
confirm boolean DEFAULT false,
paid boolean DEFAULT false,
CONSTRAINT "Order_pkey" PRIMARY KEY (id),
CONSTRAINT "Order_customer_id_fkey" FOREIGN KEY (customer_id)
REFERENCES public."Customer" (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
请不要介意如何设置列属性。
我遇到的问题是:
如何制作一个SELECT查询,该查询将为我提供一个结果,即在2017-09-15'之后订购了某些内容的客户的电子邮件和电子邮件。
我认为这应该与JOIN一起使用,但我尝试过的查询都没有:/。
谢谢!
答案 0 :(得分:0)
您应该发布您尝试过的查询,但在此期间请尝试此操作。这是一个简单的联接:
SELECT DISTINCT id
, email
FROM public."Customer" c
JOIN public."Order" o
ON c.id = o.customer_id
WHERE order_date > '2017-09-15'
答案 1 :(得分:0)
在表格#34;订单"您只需要为客户ID添加当前约束:
customer_id integer REFERENCES Customer (id)
有关更多信息,请查看此页面: https://www.postgresql.org/docs/9.2/static/ddl-constraints.html
所以,查询应该是这样的:
SELECT id, email
FROM Customer
INNER JOIN Order
ON (Order.customer_id = Customer.id)
WHERE order_date >= '2017-09-15'
此外,您可以查看有用的文档:https://www.postgresql.org/docs/current/static/tutorial-join.html