我對如何處理這個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