我对如何处理这个SQL查询有点困惑。跨两个表的SQL SELECT
我有两个表(相等的记录数),我想返回一个列,其中是两者之间的分工。
换句话说,这是我未工作,正确查询:
SELECT((SELECT v FROM Table1)/(SELECT DotProduct FROM Table2));
我会怎么做呢?所有我想要一个列,其中每行等于Table1中的同一行除以表2中的同一行。结果表应具有相同的行数,但我得到的东西比原来的两个表多得多。
我处于完全丧失状态。有什么建议?
我对如何处理这个SQL查询有点困惑。跨两个表的SQL SELECT
我有两个表(相等的记录数),我想返回一个列,其中是两者之间的分工。
换句话说,这是我未工作,正确查询:
SELECT((SELECT v FROM Table1)/(SELECT DotProduct FROM Table2));
我会怎么做呢?所有我想要一个列,其中每行等于Table1中的同一行除以表2中的同一行。结果表应具有相同的行数,但我得到的东西比原来的两个表多得多。
我处于完全丧失状态。有什么建议?
这听起来像你有两种表之间的某种关键。你需要一个Inner Join:
select t1.v/t2.DotProduct
from Table1 as t1
inner join Table2 as t2
on t1.ForeignKey = t2.PrimaryKey
应该工作。只要确保你注意到由零错误划分。
我得到每个结果的4份副本。你见过这个? – 2010-03-25 20:29:08
您是使用内部连接还是最初发布的哈希连接(这是错误的...我误解了这个问题)? – 2010-03-25 20:30:18
您需要对表格进行JOIN并分割所需的列。
SELECT(Table1.v/Table2.DotProduct)FROM表1表2 JOIN ON 东西
你需要substitue 东西告诉SQL如何匹配的行: 喜欢的东西:Table1.id = Table2.id
您没有指定完整的表结构,因此我将假设一个公共ID列来链接表中的行。
SELECT table1.v/table2.DotProduct
FROM Table1 INNER JOIN Table2
ON (Table1.ID=Table2.ID)
如果你的Fileds是你需要做的是为了避免整数运算都是整数:
select t1.v/(t2.DotProduct*1.00)
from Table1 as t1
inner join Table2 as t2
on t1.ForeignKey = t2.PrimaryKey
如果您在与值表1你需要指定使用哪个表2有多个值 - 我选择了最大的一个。
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
您可能想稍微清理标签。你使用MySQL,MSSQL(Microsoft SQL Server)还是其他一些数据库? – JohnFx 2010-03-25 20:29:23