2010-07-22 37 views
0

我想構建要在.net中使用的查詢。下面你可以看到SQL查詢,任何一個可以給我相當於亞音速查詢Subsonic:自加入查詢需要

SELECT DISTINCT 
    a2.AccountID AS BID, 
    a2.AccountName AS Brand 
FROM 
    Account a 
    INNER JOIN Account a2 ON a.ParentID = a2.AccountID 
WHERE 
    a.AccountTypeID = 6 
ORDER BY 
    Brand 

請幫助我。

回答

0

SubSonic 2或3?

隨着SubSonic,你總是有一個很好的後門。

這就是所謂的InlineQuery在2.x和CodingHorror在3.X

e.g:

var result = DB.Query().ExecuteReader("SELECT DISTINCT 
     a2.AccountID AS BID, 
     a2.AccountName AS Brand 
    FROM Account a 
    INNER JOIN Account a2 ON a.ParentID = a2.AccountID 
    WHERE a.AccountTypeID = ?accounttypeid 
    ORDER BY Brand", 6); 

如果您希望繼續使用,因爲語法檢查和SQL轉換的流暢界面。這是另一種我能想到的方法(SubSonic 2.2)

 DataTable result = DB.Select(
       "a1." + Account.Columns.AccountId + " as BID", 
       "a2." + Account.Columns.AccountName + " as Brand") 
      .From(Account.Schema.QualifiedName + " a1") 
      .InnerJoin(Account.Schema.QualifiedName + " a2", 
         "a2." + Account.Columns.account_id, 
       "a1", "a1." + Account.Columns.parent_id) 
      .Where("a1." + Account.Columns.AccountTypeId).IsEqualTo(6) 
      .OrderAsc("a2." + Account.Columns.AccountName) 
      .ExecuteDataSet().Tables[0]; 

但是我從來沒有這樣做過,但我沒有驗證過它。但也許它有效。