我想下面的語句轉移到亞音速2.2亞音速2加入多個列
SELECT b.*
FROM tableA a
INNER JOIN tableB b
ON (a.year = b.year AND a.month = b.monath AND a.userid = b.userid);
我的問題是亞音速的SqlQuery.LeftInnerJoin()命令沒有超載這需要多個列。
由於任何加盟只能用where子句來重寫,我沒有在我的SQL如下:
SELECT b.*
FROM tableA a, tableB b
WHERE a.year = b.year
AND a.month = b.month
AND a.userid = b.userid
應產生相同的結果(事實上,至少在MySQL的,有邏輯上是絕對沒有這些陳述之間的差異)。
但我也被卡住轉移到亞音速,因爲「IsEqualTo(...)」成員足夠聰明,以弄清楚我的參數是一個字符串,並將其放入引號。
DB.Select("TableB.*")
.From<TableA>()
.From<TableB>()
.Where(TableA.YearColumn).IsEqualTo("TableB.Year")
.And(TableA.MonthColumn).IsEqualTo("TableB.Month")
.And(TableA.UseridColumn).IsEqualTo("TableB.UserId")
(我試着在設置IsEqualTo參數不同的方式)
IsEqualTo(TableB.YearColumn)
IsEqualTo(TableB.YearColumn.QualifiedName)
無論是參數視爲
TableA.Year = 'TableB.Year'
或者我得到一個SqlQueryException。
有人可以告訴我如何做亞音速這個查詢(或者第一個 - 與JOIN或第二個)?謝謝
您是否嘗試檢查正在生成的SQL語句?即 SubSonic.SqlQuery S =新SubSonic.Select()從(...; Console.WriteLine(s.ToString()); – sparks 2010-05-06 12:49:34
是, 正如我所說亞音速胎面我的參數作爲一個字符串(不會導致失敗,但在這種情況下是錯誤的(SELECT * FROM tableA,tableB WHERE tableA.Year ='TableB.Year'將永遠不會返回一行) – 2010-05-07 06:19:49