Ich mag diese SQL-Abfrage in Nhibernate QueryOver tun:Gruppe von mit verschiedener Auswahl Nhibernate
SELECT id FROM tb_example
GROUP BY id, name
ORDER BY name
Was ich versuchte:
1) ich ein .Select
in SelectList
versuche hinzugefügt außer Kraft zu setzen die Auswahl von SelectGroup
aber kein Erfolg
var query = session.QueryOver<Person>()
.SelectList(list => list
.Select(p => p.Id)
.SelectGroup(p => p.Id)
.SelectGroup(p => p.Name));
query = query.OrderBy(p => p.Name).Asc;
generiert SQL mit query
:
SELECT id, id, name FROM tb_example
GROUP BY id, name
ORDER BY name
2) in den Ergebnissen einer anderen Abfrage verwenden Abfrage. Wie folgt:
SELECT id
FROM
(SELECT id, name FROM tb_example
GROUP BY id, name
ORDER BY name)
Aber ich weiß nicht, wie Sie eine Abfrage der Ergebnisse von einer anderen Abfrage erstellen.
var groupByQuery = session.QueryOver<Person>()
.SelectList(list => list
.SelectGroup(p => p.Id)
.SelectGroup(p => p.Name));
var query = session.QueryOver<?????>();
Wie kann ich das tun? Vielen Dank!
# In Bezug auf 1, leider mit QueryOver Sie _must_ 'SELECT' alle der Gruppierungsspalten. # 2 ist absolut unmöglich, soweit ich weiß. QueryOver kann nur aus gemappten Tabellen auswählen (nicht willkürliche Tabellenausdrücke wie Ihr Beispiel zeigt). –
Siehe auch diese Frage, möglicherweise ein Duplikat: http://Stackoverflow.com/q/30913037/497356 –
Hallo @AndrewWhitaker, es ist eine Ehre. Ich habe alle Ihre NHibernate QueryOver Series verfolgt. Ich habe die Lösung in dieser Frage gefunden, ich schließe meine Frage als Duplikat ab. Danke vielmals! –