Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Query MYSQL: DISTINCT su più database

    Ciao a tutti,
    una mano per una query mysql:

    ho 3 tabelle (tabellaA, tabellaB, tabellaC) devo estrarre da queste 3 tabelle i campi SETTORE senza avere ripetizioni di valore.

    Fatemi sapere.

    Grazie mille.

  2. #2
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    un po' vago... puoi dirci di più?

  3. #3
    qualcosa del tipo

    SELECT DISTINCT Settore FROM
    (
    SELECT DISTINCT Settore FROM db1..tabella
    UNION
    SELECT DISTINCT Settore FROM db2..tabella
    UNION
    SELECT DISTINCT Settore FROM db3..tabella
    )
    T1


  4. #4
    Ciao, grazie per la risposta.

    Ho provato col COUNT ma mi da errore:

    Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
    ODBC driver does not support the requested properties.

    codice:
    strqemail2 = "select count(*) DISTINCT settore FROM (SELECT DISTINCT settore FROM co.tabellaA UNION SELECT DISTINCT settore FROM co.tabellaB)"
    co. è la connessione al database, ho provato anche senza ma mi da lo stesso errore.

  5. #5
    che c'entra la COUNT(*) ?

  6. #6
    perchè devo utlizzare un .movefirst e se la query non trova valori mi va in errore.
    Ma non è un problema, ci saranno sempre campi quindi il controllo posso evitarlo.

    Ora ho fatto:
    codice:
    strqsottogruppi2 = "select DISTINCT settore FROM (SELECT DISTINCT settore FROM tabellaA UNION SELECT DISTINCT settore FROM tabellaB)"
    
    oppure
    
    strqsottogruppi2 = "select DISTINCT settore FROM (SELECT DISTINCT settore FROM co.tabellaA UNION SELECT DISTINCT settore FROM co.tabellaB)"
    e mi da sempre questo errore:
    Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
    ODBC driver does not support the requested properties.

  7. #7
    1. usa .eof per vedere se la query ha restituito dati
    2. prova a mettere T1 dopo la chiusura della parentesi della query, come da mio esempio

  8. #8
    perfetto, ora va!!
    Per la questione del .eof io mando al primo record con movefirst, se lo metto dentro .eof mi va nel ciclo e rimanda sempre all'inizio, forse sbaglio qualcosa.

    Ti faccio un esempio:
    codice:
    set rsgruppi = server.createObject("ADODB.Recordset") 
    strqgruppi = "select * from gruppi order by nome"
    rsgruppi.Open strqgruppi,co,2,3 
    
    set rsgruppi2 = server.createObject("ADODB.Recordset") 
    strqgruppi2 = "select count(*) as totrec from gruppi"
    rsgruppi2.Open strqgruppi2,co,2,3 
    totrecgruppi = Cint(rsgruppi2(0))
    
    if totrecgruppi > 0 then
    rsgruppi.movefirst
    while not rsgruppi.oef
    ...
    rsgruppi.movenext
    wend
    se io metto rsgruppi.movefirst dentro il ciclo mi ri va sempre all'inizio.
    se non metto il controllo totrecgruppi e la query non trova record, il movefirst mi va in errore.

    Forse sbaglio qualcosa e si può mettere il controllo in altro modo, che dici?

  9. #9
    dopo la rsxxxx.open metti if rsxxxx.eof: se =true vuol dire che non ci sono dati

  10. #10
    perfetto... quindi metto sempre un controllo in più.. grazie mille, funziona tutto perfettamente!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.