Ich habe eine SQL-Abfrage, die zweimal auf die gleiche Tabelle verweist, und ich muss die Tabelle auf zwei separate Aliase umleiten. Ich kann mir nicht vorstellen, wie ich das mit Knex machen soll.
Es gibt eine "Words" -Tabelle und eine "Users" -Tabelle. Die Words-Tabelle hat zwei Fremdschlüssel, "author_id" und "winner_id", die auf die Spalte "id" der Tabelle "Users" verweisen.
Hier ist die SQL, die ich in Knex schreiben möchte:
%Vor%Ich bin ein wenig verloren, wie man das in Knex macht. Mein erster Versuch beinhaltete kein Aliasing, und so bekam ich einen Fehler "Tabelle mehr als einmal verwendet". Als ich versuchte, die .as () -Methode zu verwenden, beklagte sich knex, dass eine fehlende .from () -Klausel existierte. Wird die .as () -Methode nur für Aliasing-Unterabfragen verwendet, und ich sollte nicht erwarten, dass sie für Alias-Tabellen verwendet wird?
Ich denke, ich habe es herausgefunden. In knex.js sagen Sie, dass Sie eine Tabelle wie folgt angeben:
knex.select( '*' ).from( 'Users' )
Dann können Sie einfach das Schlüsselwort AS in die Anführungszeichen des Tabellennamens einfügen, um es wie folgt zu aliasieren:
knex.select( '*' ).from( 'Users AS u' )
.. und Sie können dies auch für Spaltennamen tun; also würde mein ursprünglicher SQL in knex-land so aussehen:
%Vor%Ich glaube, ich wurde durch das Vorhandensein von Knex's .as () -Methode verwirrt, die (soweit ich derzeit verstehe) nur für Unterabfragen gedacht ist, nicht für Aliasing-Tabellen oder Spaltennamen.
Aliasing oder die Methode .as()
wird nicht nur für Unterabfragen verwendet, sondern kann auch für Aliasing-Spaltennamen und Tabellen verwendet werden. In Ihrem Fall müssen Sie einen Alias für Ihre Tabelle verwenden, weil Sie die Tabelle zweimal verwendet haben. Bei Ihrem ersten Versuch wurde ein Fehler angezeigt, weil Ihr SQL verwirrt wurde. Indem Sie einen Alias in die Tabelle einfügen, der zweimal verwendet wird, haben Sie ihm eine Kennung gegeben, dass sich ua.Users
table jetzt von uw.Users
table unterscheidet. Ich hoffe, es hat dir geholfen.
Tags und Links sql left-join inner-join knex.js