Ich bin nicht wirklich sicher, der beste Weg, um dies zu tun, oder wenn ich nur für ein Leben, das einfacher als es sein soll fragen. Ich habe ein Backend für eine Webanwendung und schreibe alle Abfragen in Raw SQL. Zum Beispiel ein bestimmtes Benutzerprofil bekommen, oder eine Anzahl von Benutzern habe ich eine Abfrage wie folgt:Erstellen dynamischer SQL-Abfragen mit psycopg2 und postgresql
SELECT accounts.id,
accounts.username,
accounts.is_brony,
WHERE accounts.id IN %(ids)s;
Das ist wirklich schön, weil ich ein Benutzerprofil bekommen, oder viele Benutzerprofile mit der gleichen Abfrage. Jetzt ist meine echte Abfrage tatsächlich fast 50 Zeilen lang. Es hat viele Verknüpfungen und andere Bedingungen für dieses Profil.
Sagen wir, ich möchte alle die gleichen Informationen von einem Benutzerprofil erhalten, aber anstatt eine bestimmte Benutzer-ID zu erhalten, möchte ich einen einzigen zufälligen Benutzer bekommen? Ich finde es nicht sinnvoll, 50 Codezeilen zu kopieren und einzufügen, nur um am Ende zwei Zeilen zu ändern.
SELECT accounts.id,
accounts.username,
accounts.is_brony,
ORDER BY Random()
LIMIT 1;
Gibt es eine Möglichkeit, eine Art der Vererbung in Erstellen von Abfragen zu verwenden, so dass am Ende kann ich ein paar Bedingungen ändern während des Kern die gleichen Ähnlichkeiten?
Ich bin mir sicher, dass ich es durch Verketten von Strings und so schaffen könnte, aber ich war neugierig, ob es eine allgemein akzeptierte Methode gibt, sich einer solchen Situation zu nähern. Google hat mich enttäuscht.
Unterabfragen? Etwas wie 'Select * von () als Reihenfolge von random() limit 1;' –
Abelisto
das macht Sinn. ist die große Auswirkung auf die Leistung, wenn eine Abfrage in eine Unterabfrage eingefügt wird? Ich versuche es selbst zu testen, wenn ich ein bisschen Zeit habe. – DigitalDisaster
Es ist abhängig von der "Kernabfrage" und Abfrageplaner. – Abelisto