If you have something like this:
class User
{
public virtual IList<UserRecord> Records {get;set;}
}
And map that using, for example, a bag:
<class name="User" ...>
...
<bag name="Records">
<key column="userid">
<one-to-many class="UserRecord"/>
</bag>
</class>
(you also need to create the mapping for the UserRecord and Record classes, using <bag> or <set> on the one-to-many side and <many-to-one> on the... many to one side :-))
Then you can just get the user, and the collection will be loaded for you (lazily by default, but you can override it):
var user = session.Get<User>(2);
Assert.AreEqual(10, user.Records.Count);
As Fabio said, FORGET about the tables and the SQL. Just design you domain classes as they are logically related (one user has many records, a record belongs to a user (many-to-one), etc)
Then you can map that to the existing relational model, or even let NHibernate generate the model from your mapping.
Diego