Ich habe folgendes Modell:Vergleich mit Zahl in Innen subquery (NHibernate QueryOver API)
create table Products (
Id UNIQUEIDENTIFIER not null,
Name NVARCHAR(255) null,
CategoryId UNIQUEIDENTIFIER not null,
primary key (Id),
unique (Name, CategoryId)
)
create table Rates (
Id UNIQUEIDENTIFIER not null,
Price NUMERIC(19,5) not null,
TimeStamp DATETIME not null,
UserId UNIQUEIDENTIFIER not null,
ProductId UNIQUEIDENTIFIER not null,
primary key (Id),
unique (Price, UserId, ProductId)
)
create table Categories (
Id UNIQUEIDENTIFIER not null,
Name NVARCHAR(255) not null unique,
primary key (Id)
)
EDIT: Das Domain-Modell ist wie folgt:
public class Category
{
public string Name { get; set; }
public IList<Product> Products { get; set; }
public Guid Id { get; set; }
}
public class Product
{
public string Name { get; set; }
public Category Category { get; set; }
public IList<Rate> Rates { get; set; }
public Guid Id { get; set; }
}
public class Rate
{
public User User { get; set; }
public Product Product { get; set; }
public decimal Price { get; set; }
public DateTime TimeStamp { get; set; }
public Guid Id { get; set; }
}
Was ich tun möchte, Wählen Sie alle Kategorien aus, denen keine Produkte mit zugehörigen Preisen zugeordnet sind. I.e. In SQL würde dies wie folgt aussehen:
select * from Categories category where
(select count(*)
from Products product
inner join Rates rate on rate.ProductId = product.Id
where product.CategoryId = category.Id) = 0;
Wie kann ich dies mit QueryOver API tun?
Ich sehe kein Domänenmodell; Ich sehe nur dein Datenbankmodell. Um Ihre Frage beantworten zu können, müssen wir wissen, wie die Klassen aussehen. (Außerdem denke ich, dass Ihre SQL-Abfrage falsch ist). –
@ FrederikGheysels, bearbeitet. – eigenein