带表的SQL访问
它不允许我上传图像,但列是OrderID、CustomerName、CustomerAddress、ProductNumber、SellDate、ProductDescription 我正在努力自学SQL。有人能帮我确定一些事情吗 1) 我想编写一条SQL语句,检索下订单7的客户的客户名称和地址 是这样吗带表的SQL访问,sql,database,database-design,Sql,Database,Database Design,它不允许我上传图像,但列是OrderID、CustomerName、CustomerAddress、ProductNumber、SellDate、ProductDescription 我正在努力自学SQL。有人能帮我确定一些事情吗 1) 我想编写一条SQL语句,检索下订单7的客户的客户名称和地址 是这样吗 Select CustomerName, Address From Order Where OrderID = ‘7’ INSERT INTO order(OrderID, Custome
Select CustomerName, Address
From Order
Where OrderID = ‘7’
INSERT INTO order(OrderID, CustomerName, CustomerAddress, ProductNumber, SellDate, ProductDescription)
VALUES (8, 'Ben C', '12 Kents Road', 01/15/2012, Clay :));
2) 接下来,我想编写一条SQL语句,将新订单添加到订单表中
是这样吗
Select CustomerName, Address
From Order
Where OrderID = ‘7’
INSERT INTO order(OrderID, CustomerName, CustomerAddress, ProductNumber, SellDate, ProductDescription)
VALUES (8, 'Ben C', '12 Kents Road', 01/15/2012, Clay :));
3) 这个数据模型有什么问题,您将如何重新设计它?我真的需要帮助。需要分类吗?我如何描述新的高级设计
4) 如何将这些数据从旧模型移动到新模型
5) 使用新的数据模型,我需要编写一个联接来检索下订单7的客户的客户名称和地址。我还没有到这里,因为我不知道为什么旧的数据模型不好。首先,您需要回答一个问题:
- 客户可以下多个订单吗?如果您的回答是“是”,您是否想要一份客户目录
create table tbl_customers (
customerId int not null primary key,
customerName varchar(100),
customerAdress varchar(200)
);
create table tbl_products (
productNumber int not null primary key,
productName varchar(100),
);
create table tbl_orders (
orderId int not null primary key,
orderDate date,
customerId int unsigned not null
);
您的产品目录:
create table tbl_customers (
customerId int not null primary key,
customerName varchar(100),
customerAdress varchar(200)
);
create table tbl_products (
productNumber int not null primary key,
productName varchar(100),
);
create table tbl_orders (
orderId int not null primary key,
orderDate date,
customerId int unsigned not null
);
您的订单目录:
create table tbl_customers (
customerId int not null primary key,
customerName varchar(100),
customerAdress varchar(200)
);
create table tbl_products (
productNumber int not null primary key,
productName varchar(100),
);
create table tbl_orders (
orderId int not null primary key,
orderDate date,
customerId int unsigned not null
);
对于每个订单,您需要知道您将订购哪些产品的“单位”:
create table tbl_orders_products (
orderProductId int not null primary key,
orderId int not null,
productNumber int not null,
units int,
);
在此之后,您将使用数据填充表,然后可以执行适合您的查询
请注意:
与tbl\u订单
相关。。。您的客户的数据必须先插入tbl\u客户
,然后才能下订单tbl_customers
- 在插入订单的详细信息之前,您需要创建订单
- 在插入订单的详细信息之前,您需要填充
tbl\u产品
现在,如果您想移动到此模型,您需要做一些工作:
插入tbl_产品值(1,'productA'),(2,'productB'),…
customerId | customerName | customerAdress
---------------------------------------------
1 | John Doe | 31 elm street
2 | Jane Doe | 1223 park street
。。。和产品:
productNumber | productName
------------------------------
1000 | Pencil
2000 | Paper clip
3000 | Bottled water
现在,下订单需要两个步骤:首先,创建订单记录,然后插入订单详细信息:
插入tbl_订单值(1,'2012-10-17',1)代码>
插入tbl_订单_产品值(1,1,1000,1)、(2,1,2000,10)代码>
select c.*
from tbl_customers as c
inner join tbl_orders as o on c.customerId = o.customerId
where o.orderId = 7;
这只是一个起点。你应该寻找好书或在线教程(w3教程可以是一个很好的在线“起点”)
虽然我不太喜欢MS Access,但它是学习sql基础知识的好程序,而且有很多关于它的书籍和学习资源注意:我不喜欢Access,我也不想宣传它,但它可能是一个很好的学习工具。一个简单的提示。在为数据解决方案建模时,试着写下描述场景的简单句子。例如(好的,这只是一个基本问题):
- 订单由许多订单行组成
- 订单行指的是产品
- 客户创建了许多订单
- 订单以唯一的序列号、日期和总数为特征。它指的是客户
- 订单行是指产品,其特征是数量、单价和小计
- 顾客
好的,这不是一个建模教程,但它是一个起点,只是为了接近解决方案。首先,你需要正常化,这方面有很多东西,但是大量的教程试图利用一些常识,让它变得非常模糊 看看你的列名,我看到了三个表 客户(CustomerID、CustomerName、CustomerAddress) CustomerOrder(OrderID、CustomerID、SellDate、ProductNumber)尝试不将表和列命名为Sql关键字 产品(产品编号、产品描述) 规范化表示,您应该能够唯一地标识表中的任何记录,您可以使用OrderId标识这些记录。当我拆分表时,我添加了CustomerID,因为可以有多个同名的客户 另一个简单的规则是在您的结构中,如果您为一个客户下了多个订单,您将多次存储他们的姓名和地址,这是浪费,但真正的问题是,如果该客户更改了地址怎么办?您如何找到要更改的行,您可以在Where name=“Fred”和Address=“Here”中进行更改,但您不知道是否有多个客户呼叫了地址为Here的Fred 所以您的第一个查询将是一个连接
Select Customers.CustomerName,Customers.CustomerAddress From Customers
Inner join CustomerOrders On Customers.CustomerID = CustomerOrders.CustomerID
Where CustomerOrders.OrderID = 7
或者,如果您现在想跳过过去的学习连接,您可以通过两个查询来完成
Select CustomerID From CustomerOrders Where OrderID = 7
然后
您应该使用联接,但您可能会发现子查询更容易理解。您可以使用同时执行两个查询
Select CustomerID From CustomerOrders
Where CustomerID In (Select CustomerID From CustomerOrders Where OrderID = 7)
不知道sql表的创建有多大进展,但主键和外键是需要考虑的两件事。那会让你