naijacoder:
Which i understand the only way i can do this is neither through the OM or through web services.
Actually, the best way to do this is either through the OM or Web Services. Using web services you can return a string of XML data (I can't remember offhand if this is the case with the OM) and use that along with the dataset object to deserialize the data into a more native ADO.NET object. This will allow you to do anything you can do with a normal dataset. Remember, the dataset is abstracted away from the data source -- that's where adapters come in. So, in theory you can join data from multiple SQL databases, oracle databases or other OLE databases (and in our case, SharePoint lists) and treat all of this data as a convergant source of information. However, one of the things to keep in mind is that SharePoint allows for multi-value fields in some cases (for example, look-ups to other lists where multiple items can be selected as is the case with the default issues list). These will require some extra handling in the dataset, but it shouldn't be too difficult.
The other thing that you may want to take into consideration is how to handle really large lists of data. The web services allow you to configure the number of items from a list you want to return at a time. This will help in managing memory during the execution of your application, so in theory, you could real-time join the data in memory. However, if you are dealing with an exceptionally large list of data, it might be advisable to move the data into a new table prior to working with the data. This depends totally on your environment and the data you will be manipulating.
Hope this helps!