Mysql 这个问题的解决方案是什么?
我是数据库领域的新手。我目前正在使用Murach的mysql学习mysql。我在书中遇到了以下问题,但我无法找出解决问题的正确方法 编写一个SELECT语句 加入 客户、订单、订单项和 产品表。此语句应返回以下列: 姓, 名字, 订单日期、产品 me、项目价格、折扣金额、, 和 量 . 为表使用别名。 按对最终结果集排序 最后的 _名字, 顺序 _日期,以及 产品名称 到目前为止,我有一个疑问:Mysql 这个问题的解决方案是什么?,mysql,sql,database,mysql-workbench,Mysql,Sql,Database,Mysql Workbench,我是数据库领域的新手。我目前正在使用Murach的mysql学习mysql。我在书中遇到了以下问题,但我无法找出解决问题的正确方法 编写一个SELECT语句 加入 客户、订单、订单项和 产品表。此语句应返回以下列: 姓, 名字, 订单日期、产品 me、项目价格、折扣金额、, 和 量 . 为表使用别名。 按对最终结果集排序 最后的 _名字, 顺序 _日期,以及 产品名称 到目前为止,我有一个疑问: select last_name , first_name , order_date , prod
select last_name , first_name , order_date , product_name , tem_price,
discount_amount, quantity
from customers , orders , order_items product
order by last_name , order_date , product_name
好的,我们将分析这个查询。因为您没有指定数据库结构,所以我将进行一次分析 选择联接客户、订单、订单项和产品表的语句 这是对表的引用,在FROM子句中。你必须用WHERE子句把它们连接起来 此语句应返回以下列:姓、名、订单日期、产品名称、项目价格、折扣金额和数量 此部分引用SELECT子句 为表使用别名 这一部分涉及整个查询,意味着必须虚拟地重命名表,并且只形成此查询,并且在每个引用中必须使用新名称
SELECT c.last_name, c.first_name, o.order_date, p.product_name,
p.item_price, p.discount_amount, p.quantity
FROM Customers AS c, Orders AS o, Order_Items AS i, Products AS p
WHERE c.order_id = o.order_id
AND i.order_id = o.order_id
AND p.product_id = i.product_id
按姓氏、订单日期和产品名称对最终结果集进行排序
这一部分是指订单条款。你必须记住别名
SELECT c.last_name, c.first_name, o.order_date, p.product_name,
p.item_price, p.discount_amount, p.quantity
FROM Customers AS c, Orders AS o, Order_Items AS i, Products AS p
WHERE c.order_id = o.order_id
AND i.order_id = o.order_id
AND p.product_id = i.product_id
ORDER BY c.last _name, o.order _date, p.product_name
您可以对这4个表customer、Orders、Order\u items、Products使用内部联接,但请确保这3个表中的列之间存在匹配 基于给定信息的sql查询示例。假设CustomerID是两列之间的匹配项
使用ANSI标准联接语法:
SELECT c.last_name, c.first_name, o.order_date, p.product_name,
p.item_price, p.discount_amount, p.quantity
FROM Customers AS c
INNER JOIN Orders AS o ON c.order_id = o.order_id
INNER JOIN Order_Items AS i ON o.order_id = i.order_id
INNER JOIN Products AS p ON i.product_id = p.product_id
ORDER BY c.last _name, o.order _date, p.product_name
到目前为止,你得到了什么?你能添加3个表的create语句吗?这是非常基本的SQL,我相信你所指的590页长的书也涵盖了这一点。提示,寻找join语句。也许她只是想理解其含义或查询。虽然,她应该在问题中包括她有什么tried@AllanS.Hansen这里有交叉联接的用法吗?除了你刚刚教过这个初学者糟糕的老式联接语法外,上次我看清单4中没有任何联接条件的表时,会导致3个交叉联接,即一个潜在的糟糕的笛卡尔积;你想修改你的答案吗?在你提出建议的时候,我正在做修改不过,谢谢你的支持revision@JCalcines感谢您对问题的完整分析。@JCalcines这有了很大的改进,但是@Sonali您不想学习这种老式的连接语法。这里使用的所有连接都是内部连接,FROM子句应该使用这种语法。@在学习执行查询时,您已经使用了。在控制SELECT、FROM和WHERE语句之后,开始使用联接。她刚刚开始学习SQL,所以我相信这是更好的方法,有4个表要连接。好的,你可以基于我提供的SQL查询,然后你可以通过添加D进行编辑,C将通过匹配D customerID和C customerID继续内部连接D
SELECT c.last_name, c.first_name, o.order_date, p.product_name,
p.item_price, p.discount_amount, p.quantity
FROM Customers AS c, Orders AS o, Order_Items AS i, Products AS p
WHERE c.order_id = o.order_id
AND i.order_id = o.order_id
AND p.product_id = i.product_id
ORDER BY c.last _name, o.order _date, p.product_name
Select A.last_name,A.first_name,B.order_date,B.product_name,C.item_price,C.discount_amount,D.quantity
from TB_Customers A inner join TB_Orders B on A.CustomerID = B.CustomerID
inner join TB_Order_Items C on B.CustomerID = C.CustomerID on
inner join TB_Products D on C.CustomerID = D.CustomerID Where D.CustomerID ='TEST111'
SELECT c.last_name, c.first_name, o.order_date, p.product_name,
p.item_price, p.discount_amount, p.quantity
FROM Customers AS c
INNER JOIN Orders AS o ON c.order_id = o.order_id
INNER JOIN Order_Items AS i ON o.order_id = i.order_id
INNER JOIN Products AS p ON i.product_id = p.product_id
ORDER BY c.last _name, o.order _date, p.product_name