2016-07-18 35 views
0

Ich bin ein neuer Slick-Benutzer und ich habe Probleme beim Erstellen einer glatten Abfrage. Ich brauche diese SQL-Abfrage mit Slick auszuführen:Scala Slick führen komplexe SQL Abfrage

SELECT COUNT(dd.definition_id) accuracy, d.id, d.subject_id, d.creator_id, d.active 
FROM definition_detail dd 
INNER JOIN definition d 
ON dd.definition_id=d.id 
WHERE dd.value_id IN (1,2,3) 
GROUP BY dd.definition_id; 

Ich habe versucht, es selbst zu tun, aber ich schaffte es nur diese zu erstellen:

db.run((definition join definitionDetailDAO.definitionDetail on ((d, dd) => d.id === dd.definition_id)) 
     .map{ 
      case (d, dd) => (d, dd) 
     }.filter(_._2.value_id inSet valuesSeq) 
     .map{ 
      case (d, dd) => (d.id, d.subject_id, d.creator_id, d.active) 
     }.result) 

Welche dieser Abfrage entspricht:

SELECT d.id, d.subject_id, d.creator_id, d.active 
FROM definition_detail dd 
INNER JOIN definition d 
ON dd.definition_id=d.id 
WHERE dd.value_id IN (1,2,3); 

Kann mir jemand helfen, es zu lernen?

P.S. Ich verwende diese Abhängigkeiten:

libraryDependencies += "com.typesafe.play" %% "play-slick" % "2.0.0" 

libraryDependencies += "com.typesafe.play" %% "play-slick-evolutions" % "2.0.0" 
+0

dang .head, kann ich Machen Sie einen snarky Kommentar wie haben Sie darüber nachgedacht, bevor Sie Slick wählten? Weil die Sache ist, ist das keine komplexe Abfrage. Sie werden enorm schlimmer. So finden Sie einige Abfrage-Funktionalität und umgehen Sie es. – Drew

+0

@Drew Was das Problem damit? – Tolyas

+0

Das Problem ist, dass Sie für Stunden eingefroren sind, weil ein Orm Ihnen in den Weg kommt. – Drew

Antwort