数据库:
Car: Contract: Customer:
Carplate (PRKEY) Contractid(PRKEY) CustomerID(PRIK)
PRICE Miles Customername
Leased(0Free- 1Leased) Carplate(FKEY) Zipcode
ContractID FKEY)
Carplate(FKEY)
我希望所有租用的汽车(= 1)的当前里程,客户名称和分组(错误订购)客户的邮政编码。
语法
SELECT *
FROM table1 INNER JOIN table2 ON
table1.primaryKey=table2.FKEY INNER JOIN
table3 ON table2.primaryKey=table3.FKEY
问题:我不明白这里的INNER JOIN的使用者和where子句。
Select Car.Leased, Contract.Miles, Customer.Customername, Customer.Zipcode
From Car
INNER JOIN Contract on Car.Carplate = Contract.Carplate
INNER JOIN Customer on Contract.Carplate = Customer.Carplate
where Car.Leased = 1
order by Customer.Zipcode ASC
尝试通过语法创建代码。这是对的吗?
答案 0 :(得分:1)
我不明白INNER JOIN在这里的使用者和地点 条款
INNER JOIN
将返回两个表之间的公共数据,WHERE
子句将从一个特定表中优化数据。
我希望所有租用的汽车(= 1)以他们当前的里程, 客户名称和按客户的邮政编码分组。
根据您的查询,您正在进行order by Customer.Zipcode ASC
。因此,GROUP BY
和ORDER BY
答案 1 :(得分:0)
看起来您还希望使用ContractID加入Customer表 - 我正在阅读表结构的方式,如果汽车被重新出售,Carplate可以显示给多个客户。您也不一定需要选择租借,因为您知道您只获得租约= 1的记录。但是如果您想将其保留为完整性检查,则不会造成任何伤害。
SELECT Contract.Miles, Customer.Customername, Customer.Zipcode
FROM Car
INNER JOIN Contract ON Car.Carplate = Contract.Carplate
INNER JOIN Customer ON Contract.Contractid = Customer.ContractID AND
Car.Carplate = Customer.Carplate
WHERE Car.Leased = 1
ORDER BY Customer.Zipcode ASC