Ist es möglich, eine JOIN-Klausel zu verwenden, wenn Sie ein Raw SQL verwenden? Wenn ja, wie sollte ich das Ergebnis abbilden, da mindestens 2 Modelle beteiligt sind?JOIN-Klausel wne mit Raw SQL in Javalite JDBC
Antwort
Sie können eine beliebige Klausel Ihrer Datenbank verwenden. Wenn Sie eine nicht standardmäßige Abfrage ausführen, verwenden Sie die Methode Model.findBySQL(...)
.
jedoch vor der Verwendung, lesen Sie dessen Dokumentation:
Insbesondere folgt aus:
Stellen Sie sicher, dass die Abfrage alle Spalten zurückgibt mit diesem Modell verbunden sind, so dass die resultierenden Modelle Hydrat könnte selbst richtig. Zurückgegebene Spalten, die nicht Teil dieses Modells sind, werden ignoriert, können aber für die oben genannten Klauseln verwendet werden.
Mit anderen Worten, die von Ihnen ausgeführte Abfrage sollte mit der von diesem Modell zurückgegebenen Spalten übereinstimmen. Technisch gesehen kann sich Ihre Abfrage über mehrere Tabellen, Ansichten erstrecken und sogar benutzerdefinierte Funktionen ausführen. Das Resultset muss jedoch Spalten enthalten, die mit diesem Modell übereinstimmen. Warum das? Weil Ihr Modell im ORM "O" ist. Mit anderen Worten, es stellt einen einzelnen Datensatz aus einer Tabelle als Objekt dar.
Wenn Ihre Ergebnisse eine Mischung aus mehr als einem Modell oder einem Teilmodell oder irgendetwas dazwischen sind, verwenden Sie keine Modell-API. Verwendung Basis:
List<Map> results = Base.findAll("complex custom query");
Blick auf Variationen von find(...)
und findAll(...)
Methoden
- 1. Raw SQL mit Ecto
- 2. Javalite - überspringen laufend Migrationen
- 3. Django: Raw SQL mit connection.cursor()
- 4. Raw SQL in .NET Core
- 5. USE Raw SQL in Django
- 6. Raw SQL zu named_scope
- 7. SQL-Dateien mit JDBC ausführen
- 8. Verwenden von Raw SQL mit Doctrine
- 9. Ausführen von Raw SQL-Abfragen mit Django
- 10. JDBC Fragezeichen in SQL-Syntax
- 11. Django: Paginator + Raw SQL-Abfrage
- 12. Raw SQL 'Einfügen in' in ASP MVC
- 13. CakePHP 3 Raw SQL-Abfrage
- 14. SQL Server - JDBC-Verbindung
- 15. Entity Framework Raw SQL-Abfrage
- 16. Ausgabe mit Phoenix JDBC mit Eichhörnchen SQL
- 17. Run raw SQL in der Migration
- 18. Escape-Raw-SQL-Abfragen in Laravel 4
- 19. Django Raw SQL-Format Tabellenname
- 20. SQL JAVA JDBC deleteForCustomerID
- 21. Running Raw sql in PHP Laravel
- 22. machen raw SQL sicher in Entity Framework
- 23. Raw sql in Entity-Framework-Querys zusammenführen
- 24. Wie RAW SQL-Abfrage in PhalconPHP
- 25. table.field Notation mit SQL Server JDBC?
- 26. Verwenden von Tabellenwerten mit SQL Server JDBC
- 27. Wie Azure SQL mit JDBC verbinden
- 28. Wie SQL-Script-Datei mit JDBC
- 29. Wie kann ich Datensätze aus der Datenbank mit Javalite zurückgeben?
- 30. Syntaxfehler in SQL-Abfrage in JDBC erhalten
Igor, danke für die Antwort. Nach der Verwendung von 'Base.findAll()' muss ich dann jeden entsprechenden Spaltenwert erhalten (Beispiel für das erste Element in der Ergebnisliste): 'results.get (0) .get (" RESULT_SET_COLUMN_NAME ")'? – belgoros
das ist richtig. Jede Karte entspricht einer Zeile aus Ihrem ResultSet. – ipolevoy