Frage

Ich würde gerne wissen, wie diese Abfrage geschrieben werden würde, wenn keine Verknüpfungen verwendet wurden. Ich versuche, es für die Fälle, um herauszufinden, wo schließt sich nicht durchführbar ist oder nicht verwendet werden (nicht verfügbar).

SELECT
    *
FROM
(
    table1
INNER JOIN
    table2
ON
    table1.id = table2.id
)
INNER JOIN
    table3
ON
(
    table1.id2 = table3.id2
)
AND
(
    table1.id3 = table3.id3
)
WHERE
    table1.id = 1

Der Grund, warum ich nicht verwenden können, schließt sich ist, da die Anwendung auf Standard-SQL-HQL im Gegensatz verwendet und HQL macht Joins unglaublich schwer zu tun.

War es hilfreich?

Lösung

Es ist unmöglich, Daten aus zwei verschiedenen Tabellen zu extrahieren, ohne sie in der einen oder anderen Verbindung. Sie verwenden eine JOIN-Anweisung, aber Sie können, indem Sie es in der where-Klausel zum Beispiel der gleichen erreichen:

SELECT * FROM table1, table2 WHERE table1.id = table2.id AND ...

Andere Tipps

Sie können tun, die wählt getrennt und tun das in der Anwendung verbindet.

Wenn sind tabu beitritt, dann bleiben weg von SQL-Datenbanken.

oft kann eine Unterabfrage leichter sein als ein beitreten, wenn nur 1 Wert Auswahl

SELECT e.Name, e.HireDate, (select SUM(CheckAmount) from EmployeeCheck where EmployeeID = e.ID) 
FROM Employee e

Nicht ein pureist aber das Kernkonzept von relationalen Datenbanken und die Datennormalisierung zu sein, ist die Verbindung. Es gibt wenig Grund, eine relationale Datenbank zu verwenden, um Daten zu speichern, mit aus diesem. Indizes macht dies schnell und effizient geschehen.

Der alte Weg war eine Master-und Transaktionstabelle zu verwenden. Zurück in den dunklen Zeiten.

Sie können jedoch einen Cursor verwenden, um die Filterung zu tun, die ein tun würde kommen. Ein Cursor funktioniert wie ein Array an den Tisch, anstatt eine Join-basierte Filter zu tun und erhalten Sie das gleiche Ergebnis erhalten.

Sie können es mit korrelierten Unterabfragen tun, wenn Sie wollen, aber schließt sich besser.

Hibernate hindert Sie nicht zu tun, schließt sich, wenn Sie eine Assoziationskartierung in Ihrem Hibernate Map-Datei haben. Siehe zum Beispiel: http://www.jumpingbean.co.za/blogs/mark / hibernate_hql_inner_join_on_clause

SQL Ohne schließt sich ...

SELECT * FROM table1
SELECT * FROM table2
SELECT * FROM table3

Das ist nicht, obwohl nicht helfen.

Die Frage ist, was ist Ihre gewünschte Ausgabe, und welche Gründe haben Sie für nicht wollen, ein Mitglied werden?

Wenn Sie Daten aus mehreren Tabellen in einer relationalen Datenbank, dann werden Sie die Daten verbinden werden. Vielleicht ist das etwas, das Sie in der Anwendung tun müssen, als James Black vorgeschlagen.

Wenn Sie etwas mehr Licht auf der Situation werfen können, obwohl wir in der Lage sein können, weiter zu helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top