我有两张桌子
脯线
Prodline_nbr
Prodline_name
prodline_color_code
prodline_discount
积
prod_nbr
prod_name
prod_price
prod_cost
我想列出每种产品的名称,销售价格,产品线名称,以及价格不超过200美元的产品的颜色代码,并按销售价格对它们进行排序。
这是我的密码
select PRODLINE_NAME,PRODLINE_COLOR_CODE,PROD_NAME, PROD_PRICE
from prodline, product
where PRODLINE_NBR in (select PRODLINE_NBR from prodline)
and prod_price<=200
order by PROD_PRICE desc;这不对吗?有人告诉我有更好的方法可以加入吗?
第二次尝试
select PRODLINE_NAME,PRODLINE_COLOR_CODE,PROD_NAME, PROD_PRICE
from prodline, product
where PRODLINE_NBR = PROD_NBR
and prod_price<=200
order by PROD_PRICE desc;有谁能评论一下吗?
谢谢。
发布于 2013-11-21 10:25:15
第二个是正确的。第一个是错误的,因为它只是乘以两个表,我想这不足以达到你的目标。比较两个脚本,唯一的区别是where子句中的一个条件:
第一种方法使用PRODLINE_NBR in (select PRODLINE_NBR from prodline),这没有什么意义,因为PRODLINE_NBR是一个prodline字段,当然每个PRODLINE_NBR都应该在其中。不管有没有这种情况都没什么不同。
第二种方法使用PRODLINE_NBR = PROD_NBR,这是一种将两个表从乘法中连接起来的典型方法。如果您想通过两个字段之间的等式连接o两个表,则需要它。
发布于 2013-11-21 10:43:03
第二种风格是最好的!有许多方法可以产生相同的产出。但效率很重要。
这个链接是很好的学习如何连接和索引工作。
https://stackoverflow.com/questions/20110641
复制相似问题