Ich habe einen Entwurf für eine Remote-Anwendung über libpq für PostrgreSQL erstellt . Es verhält sich gut, aber ich habe die allgemeine Funktionsweise der Anwendung profiliert. Für jedes Endergebnis, das ich produziere, kann es vorkommen, dass ich so etwas wie 40 select-Klausel (über tcpip) aufrufe.
Ich habe Erinnerungen von SQL-Server, die mich daran erinnern, die Anzahl der Interaktionen zwischen meiner Remoteanwendung und der Datenbank zu minimieren. Nachdem ich meine ausgewählten Elemente analysiert habe, denke ich, dass ich diese Anzahl SELECT
mithilfe von Joins auf 3 Klauseln reduzieren kann . Aber ich erinnere mich nicht an die Syntax für die Verwendung des Ergebnisses von a SELECT
in einem anderen SELECT
.
Z.B:
SELECT * FROM individual
INNER JOIN publisher
ON individual.individual_id = publisher.individual_id
WHERE individual.individual_id = 'here I would like to use the results of a another select'
Dieser andere SELECT
wäre einfach von der Art:
SELECT identifier FROM another_table WHERE something='something'
Hier ist das vereinfachte Tabellenlayout, das mehrfach für verschiedene item_types abgelehnt wurde ... (3 völlig verschiedene Typen, daher die 3 SQL-Abfragen, falls optimiert).
table passage
id_passage PK
business_field_passage bytea
table item
id_item PK
id_passage FK
business_field_item text
table item_detail
id_item_detail PK
id_item FK
business_field_item_detail text
image_content bytea
Es gibt mehrere id_item
für einen id_passage
.
Es gibt mehrere id_item_detail
für einen id_item
.
Wie würdest du das schreiben?
Wie wird die Aktion zum Umleiten einer Auswahl in eine andere (falls vorhanden) beschrieben?
quelle
Antworten:
Ist es das, was Sie anstreben? Stellen Sie sicher, dass die zu vergleichenden Felder vergleichbar sind (dh beide Felder sind numerisch, text, boolesch usw.).
Wenn Sie basierend auf mehreren Werten auswählen möchten:
quelle
SELECT someID FROM table WHERE blahblahblah
mehrere Datensätze vorhanden sind? Ich werde das gleich überprüfen.WHERE Individual.IndividualId IN...
sieht gut aus.Sie können das einfach als ein anderes umschreiben
JOIN
. Dies ist normalerweise am einfachsten und schnellsten:Ich habe auch etwas vereinfacht und auf die kostenlose Schreibweise von Bezeichnern in CamelCase verzichtet.
quelle
join
anstelle eines zu verwenden?in ( select...)
In einem solchen Fall sollte ich Erwin auch die gute Antwort zuschreiben.