我有两张桌子
Prodline
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;
这不正确吗?我被告知有一种更好的方法可以使用某种sorta join?
第二次尝试
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;
有人可以评论吗?
谢谢。
答案 0 :(得分:0)
第二个是正确的。第一个是错误的,因为它只是乘以两个表,我想这还不足以实现你的目标。 比较两个脚本,唯一的区别是where子句中的条件:
第一次使用PRODLINE_NBR in (select PRODLINE_NBR from prodline)
,这没什么意义,因为PRODLINE_NBR是prodline的一个字段,当然每个PRODLINE_NBR都应该在其中。有这种情况或没有什么不同。
第二个使用PRODLINE_NBR = PROD_NBR
,这是一种连接两个表的典型方法。如果您想通过两个字段中的等式连接两个表,则需要它。
答案 1 :(得分:0)
第二种风格是最好的!有许多方法可以产生相同的输出。但效率至关重要。
这些链接很好地了解了如何加入JOIN和INDEX。