跨两个表的SQL SELECT

时间:2010-03-25 20:22:28

标签: sql

我对如何处理这个SQL查询感到有点困惑。

我有两个表(相同数量的记录),我想返回一个列,它是两者之间的区别。

换句话说,这是我的 not-working-correct 查询:

SELECT( (SELECT v FROM Table1) / (SELECT DotProduct FROM Table2) );

我该怎么做?我只想要一个列,其中每行等于Table1中的同一行除以Table2中的相同行。生成的表应该具有相同的行数,但是我得到的行比原来的两个表要多得多。

我完全失败了。有什么建议吗?

4 个答案:

答案 0 :(得分:3)

听起来你在两张桌子之间有某种关键。你需要一个内部联接:

select t1.v / t2.DotProduct
from Table1 as t1
inner join Table2 as t2
    on t1.ForeignKey = t2.PrimaryKey

应该有效。只要确保你注意零除错误。

答案 1 :(得分:2)

您没有指定完整的表结构,所以我将假设一个公共ID列来链接表中的行。

SELECT table1.v/table2.DotProduct
FROM Table1 INNER JOIN Table2 
            ON (Table1.ID=Table2.ID)

答案 2 :(得分:1)

您需要对表格进行JOIN并划分所需的列。

SELECT(Table1.v / Table2.DotProduct)FROM Table1 JOIN Table2 ON

您需要替换某事来告诉SQL如何匹配行: 类似于:Table1.id = Table2.id

答案 3 :(得分:0)

如果你的fileds都是整数,你需要这样做以避免整数数学:

select t1.v / (t2.DotProduct*1.00) 
from Table1 as t1 
inner join Table2 as t2 
    on t1.ForeignKey = t2.PrimaryKey

如果table2中有多个值与table1中的值有关,则需要指定使用哪个值 - 我选择了最大值。

 select t1.v / (max(t2.DotProduct)*1.00) 
 from Table1 as t1 
 inner join Table2 as t2 
    on t1.ForeignKey = t2.PrimaryKey
 Group By t1.v