2010-08-27 31 views
0

嗨我正在做一個小報告使用亞音速我很漂亮小白我無法弄清楚如何只列出我的報告中的第一條記錄我正在做類似:。亞音速的幫助,如何只列出第一條記錄

new Select("id,Name,place,group").From(User.Schema) 
           .InnerJoin(Profile.Schema) 
           .InnerJoin(userGroup.Schema) 
           .Where("place") 
           .IsEqualTo("insomeplace") 
           .ExecuteReader(); 

    result: 
    093007 Joe doe insomeplace S2A 
    093007 Joe doe insomeplace S2A 
    093007 Joe doe insomeplace S2A 
    093007 Joe doe insomeplace S2A 

我嘗試新的選擇(「喇嘛喇嘛」)鮮明的()的新選擇(「喇嘛喇嘛」)前(「1」),但這些都不似乎工作...等等我可以做什麼???有任何想法嗎???當使用Top(「1」)時,我得到一個錯誤:「你的SQL語法有錯誤;查看與你的MySQL服務器版本相對應的手冊,在'userid' userName,地點,地點 FROM user 「第1" 行

我使用的是亞音速2.x的

在此先感謝

回答

0

退出!!!!我提供了

string sqlString = "Select * ..."; 
new InlineQuery().ExecuteReader(sqlString); 
0

我從你的問題的參考假設你正在使用MySql。恐怕我對MySql知之甚少,但以下內容可能會有所幫助:

  1. 我可以向你保證.Top(「1」)當然可以在SubSonic 2.x中對SQL Server工作。
  2. 你能找到一個與SQL Server的Profiler for MySql等價的東西來查看哪些SQL代碼被髮送到數據庫嗎?
  3. TOP 1是不能在MySQL中有效的SQL,而不是你需要使用LIMIT子句 - http://dev.mysql.com/doc/refman/5.0/en/select.html
+0

謝謝.... !!!我所做的是使用group by和InlineQuery方法來解決問題... – ncubica 2010-09-02 06:26:22

0

您可以使用分頁(...)方法:

new Select("id,Name,place,group").From(User.Schema) 
           .InnerJoin(Profile.Schema) 
           .InnerJoin(userGroup.Schema) 
           .Where("place") 
           .Paged(1, 1) 
           .IsEqualTo("insomeplace") 
           .ExecuteReader(); 

我如果您必須使用Paged(1,1)Paged(0,1),則不是100%百分比,請同時嘗試。

+0

感謝您的答覆和您的時間,我會嘗試你的例子,我做了什麼來解決我的問題在過去幾天是這樣的: string sqlPlacesNull =「選擇名稱,地點,u.Id FROM用戶u在u.Id = amg.Id上加入user_place_group amg u.Id = p.Id上的JOIN配置文件p WHERE place IS NULL和p.group ='S'group by u.Id「; gv.DataSource = new InlineQuery()。ExecuteReader(sqlPlacesNull); gv.DataBind(); – ncubica 2010-09-02 06:23:47

+0

我使用的是Group By和我已閱讀的是.Top適用於舊版本的2.x亞音速...我希望在接下來的幾個月內更改爲3.0 ...再次感謝... – ncubica 2010-09-02 06:25:33

+0

您可以使用Group也可以用亞音速:'新選擇(SubSonic.Aggregates.GroupBy(「id」),SubSonic.Aggregate.GroupBy(「name」),...)。從...(http://jamesewelch.wordpress .com/2008/07/03/how-to-perform-an-aggregate-query-using-subsonic-21s-sqlquery/ – 2010-09-02 14:54:06

0

另一種方法是使用.ExecuteSingle(),它只返回第一個結果。這樣做的缺點是數據庫實際上會返回查詢的所有行(SubSonic只會丟棄除第一條記錄以外的任何內容)。

+0

我想你有更好的選擇在這裏...謝謝你的時間 – ncubica 2010-09-24 16:17:52