2010-07-05 93 views
1

我正試圖在表1和表2之間建立一個1對多關係。SQL左連接不同的正確?

table1的具有以下字段

  • CREATEDATE
  • 接觸
  • TKEY(代理鍵)

table2的具有以下字段

  • TKEY(主鍵)
  • 狀態
  • userfld1
  • 描述

我要顯示在表1的對應項由table2.userfld1

select distinct t2.userfld1, t2.status, t2.description, t1.createdate, t1.contact 
from table2 as t2 left join table1 as t1 
     on t2.tkey = t1.tkey 
group by t2.userfld1 

這是正確的分組表2中的所有項目?

+2

此SQL格式錯誤。別名t1和t2沒有定義 - 'table2 left join table1.tkey'不是有效的語法。您還會收到錯誤消息,因爲您在選擇中包含未分組的字段。你能否更精確地定義你需要的結果集 - 你的意思是按'table2.userfld1'分組? – 2010-07-05 22:04:24

+0

提供示例數據 - 我不相信您希望根據'tkey'值加入表格。 – 2010-07-05 22:43:43

+0

我認爲這個術語有點不合適。我的猜測是'group by'應該是'order by','surrogate key'應該是'foreign key'。 – 2010-07-05 22:51:05

回答

1

沒有那麼不正確,除非它們包含在聚合函數中,否則不能選擇不在組中的列。而且我認爲你所要求的甚至沒有意義。我最好的猜測是,你的意思是ORDER BY,沒有GROUP BY:

SELECT DISTINCT t2.userfld1, t2.status, t2.description, t1.createdate, t1.contact 
FROM table2 t2 
LEFT JOIN table1 t1 
ON t2.tkey = t1.tkey 
ORDER BY t2.userfld1 

三個其他錯誤,我已經定:

  • SELECT ... FROM不是SELECT ... WHERE
  • 你應該加入一張表格,而不是一列。
  • 表名後面沒有別名,但後來引用了這些缺失的別名。
0

我覺得你被尋找的是爲了用,不是什麼小組,我也是固定的查詢:

select t2.userfld1, t2.status, t2.description, t1.createdate, t1.contact 
where table2 t2 left join table1 t1 
     on t2.tkey = t1.tkey 
order by t2.userfld1 

難道這就是你要找的人?