2011-09-04 15 views
13

voglio creare un join interno su tre tavoli come questo per esempio:Ormlite inner join su tre tavoli

SELECT C.Description, D.ItemDescription 
    FROM OrderDetailStatement AS D 
INNER JOIN OrderHeaderStatement AS H 
    ON H.OrderHeaderStatementRefID = D.OrderHeaderStatementRefID 
INNER JOIN customers AS C 
    ON H.CustomerRefID = C.CustomerRefID 
WHERE (D.MixedValue > 1000) 

ma io sono un po 'confuso, la prego di fornirmi una procedura dettagliata?

grazie in anticipo

+0

si prega di postare quale errore si sta ottenendo? –

+0

Ho appena provato con puro sql, perché non riesco ancora a capirlo: come scrivere la query utilizzando ormlite omlite. Ho solo bisogno di un esempio. Qualsiasi esempio che coinvolge 3 tavoli. – Antonis

+1

Si noti che stiamo aggiungendo il supporto JOIN di base in 4.42 @Antonis. Ho aggiornato la mia risposta. – Gray

risposta

34

ORMLite ora supporta simple JOIN statements. Si può fare qualcosa di simile al seguente:

// start the order header query 
QueryBuilder<OrderHeader, Integer> orderHeaderQb = orderHeaderDao.queryBuilder(); 
QueryBuilder<Customer, Integer> customerQb = customerDao.queryBuilder(); 
// join with the order query 
orderHeaderQb.join(customerQb); 
// start the order statement query 
QueryBuilder<OrderStatement, Integer> orderStatementQb = 
    orderStatementDao.queryBuilder(); 
orderStatementQb.where().gt("mixedvalue", 100); 
// join with the order-header query 
orderStatementQb.join(orderHeaderQb); 
List<OrderStatement> orderStatementQb.query(); 

Si noti, tuttavia, che si può ottenere solo le entità dal generatore di query utilizzando questo meccanismo. Se si desidera ottenere i due campi descrittivi da oggetti diversi, si dovrà comunque utilizzare una query non elaborata.

È disponibile il supporto per "query non elaborate" incluso il metodo Dao.queryRaw() in cui è possibile utilizzare il proprio SQL. Sospetto che tu li abbia già trovati. Ecco lo docs for raw queries.

+0

Grazie mille Grey! A proposito, grazie per ORMLite! – Antonis

+0

OK, questa è un'ottima notizia! – Antonis

+0

http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite_3.html#index-select-arguments – LuminiousAndroid