Domanda

Vorrei sapere come questa query avrebbe dovuto essere scritto se non si unisce sono stati utilizzati. Ho cercato di capirlo per i casi in cui si unisce non sono vitali o non può essere utilizzato (non sono disponibili).

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

Il motivo per cui non posso usare si unisce perché l'applicazione utilizza HQL al contrario di SQL standard e HQL rende unisce incredibilmente difficile da fare.

È stato utile?

Soluzione

E 'impossibile estrarre i dati da due tabelle diverse, senza unirsi a loro in un modo o nell'altro. Si utilizza una dichiarazione JOIN, ma si può ottenere la stessa cosa ponendolo nella clausola in cui, ad esempio:

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

Altri suggerimenti

Si può fare lo seleziona separati e fare i join all'interno dell'applicazione.

Se si unisce sono off limits, quindi stare lontano da database SQL.

Spesso una subquery può essere più facile di un join se solo selezionando 1 Valore

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

Non per essere un pureist, ma il concetto di base dei database relazionali e di normalizzazione dei dati è il join. Ci sono pochi motivi per utilizzare un database relazionale per memorizzare i dati con questa. Indici rendono questo accada in modo rapido ed efficiente.

Il vecchio modo è stato quello di utilizzare una tabella master e delle transazioni. Indietro nei secoli bui.

Tuttavia, è possibile utilizzare un cursore per fare il filtraggio che un join farebbe. Un cursore funziona come una matrice contro il tavolo piuttosto che fare un filtro join based e otterrà lo stesso risultato.

È possibile farlo con subquery correlate se si vuole, ma si unisce sta meglio.

Hibernate non impedisce di fare si unisce se si dispone di una mappatura associazione nel file di mappa di ibernazione. Si veda ad esempio: http://www.jumpingbean.co.za/blogs/mark / hibernate_hql_inner_join_on_clause

SQL senza giunti ...

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

che non sta andando per aiutarvi a se.

La domanda è: qual è l'output desiderato, e quali ragioni avete per non volere un join?

Se si desidera che i dati da più tabelle in un database relazionale allora si uniranno i dati. Forse questa è una cosa che devi fare nell'applicazione come suggerito James Black.

Se si potesse fare un po 'più di luce sulla situazione anche se potremmo essere in grado di aiutare ulteriormente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top