Ho bisogno di una query che senza modifiche funzioni su questi tre diversi server di database: MySQL, MSSQL, PostgreSQL. In questa query devo calcolare una colonna con la seguente espressione che funziona correttamente su MySQL:Conta su DISTINCT di diversi campi che funzionano solo su MySQL?
COUNT(DISTINCT field_char,field_int,field_date) AS costumernum
I campi nella distinti di diverso tipo:
field_char = character
field_int = integer
field_date = datetime
L'espressione è all'interno di un query padre selezionare, quindi se provo ad ottenere il risultato con un approccio sub interrogazione, inciampo in questa situazione:
SELECT t0.description,t0.depnum
(select count(*) from (
select distinct f1, f2, f3 from salestable t1
where t1.depnum = t0.depnum
) a) AS numitems
FROM salestable t0
ottengo un errore con questo quer y, come posso ottenere il valore della query genitore?
L'espressione funziona correttamente su MySQL ma ottengo un errore quando provo ad eseguirlo su Sql Server o PostgreSQL (il problema è che la funzione count non accetta 3 argomenti di tipo diverso su MSSQL/PostgreSQL), è esiste un modo per ottenere lo stesso risultato con un'espressione che funziona in ciascuno di questi server di database (SQL Server, MySQL, PostgreSQL)?
Ho già provato con questo approccio, l'unico problema è che devo filtrare la sottoquery con un valore che devo ottenere dalla query padre, vedere questo post: http://stackoverflow.com/questions/ 7088107/how-to-get-a-nested-sub-query-to-riconoscere-parent-query-column – aleroot
Vedo, post modificato per soddisfare ulteriori requisiti. –
Sembra che funzioni, ma su MySQL è estremamente lento, non so perché, nell'altro server di database funziona abbastanza velocemente ... Conosci una soluzione? – aleroot