2014-03-03 58 views
0

假設有2個或更多的表格。從2個或更多表中獲取數據:選擇還是加入?

表A:援助,姓名,生日

表B:出價,petType,petName

表C:CID,stackOverFlowUsername

我想要得到的東西像援助,姓名,生日,貓一個人的數量,堆棧溢出的用戶名

我們可以

  • 使用連接來連接所有3個表select * from tableA... tableB... tableC...
  • 使用多個SELECT語句,select a.*, (select count(*) from tableB where petType = 'cat') as numberOfCats, (select...) as stackUsername from tableA a
  • 或其他方式,我不知道

我的問題是當使用選擇正確的情況下,連接或有更好的方法嗎?

更新:

這是另一個問題。如果我有3個計算器賬戶,湯姆有1和Peter有2個, 使用

A left join B left join C

將返回一共有6排

select a.*, select count(*) from tableB where..., select top 1 stackOverFlowUsername from tableC

返回3行,因爲有3人

如果我只希望tableA中的每個人都有一行數據,而不管他/她有多少個計算器賬戶,我可以使用連接來實現類似的事情嗎?

由於

回答

0

選定子選擇(情況2)可能被掃描的每個結果列,同時加入表/視圖/子選擇是隻計算一次:節省存儲器和接合時間(與預先建立的索引) 。一旦你習慣於談論SQL,你會發現JOIN語法很容易閱讀。

+0

嗨,我有權說如果我做這樣的事情比加入浪費更多的內存? 選擇a。*,從tableC中選擇col1,其中...,從tableC中選擇col2,其中...,從tableC中選擇col3,其中... – BurningJade