2009-07-16 41 views
1

假設我有一個查詢提取[type] [show_name]。
對於所有[type] == 5條記錄,我需要將它們與另一個表連接起來。設計問題:爲sql檢索中檢索到的某些記錄提取更多數據

什麼將是最好的辦法:

  1. 加入了兩個表(很糟糕)之間的所有記錄。
  2. 運行查詢,然後再次運行結果集,獲取所有ID並對我需要加入的表執行IN查詢。
  3. 只有我提供的內容(使用相同的IN查詢)後纔可以獲取缺失的數據,也許使用AJAX方法。
  4. 我還沒有想到的東西。

重要的是,我希望用戶儘可能快地看到一些數據,但我也希望代碼簡單明瞭,沒有太多意大利麪條。

回答

2

您可以做一個left join並將type=5子句放入連接條件中。這將返回null另一個表如果type是不是5

select 
    a.type, 
    a.show_name, 
    b.whatever 
from 
    tableA a 
    left outer join tableB b on 
     a.id = b.id 
     and a.type = 5 

這工作,因爲它只能與type=5加入記錄。如果您將a.type=5置於where子句內,則會將結果集限制爲type=5

+0

a.type = 5條件應該在a.id = b.id條件之前,還是沒關係? – 2009-07-16 15:01:34