Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Aiuto Query

  1. #1

    Aiuto Query

    Ciao a tutti,
    posso fare l'insert (evitando campi doppi) dei dati presenti in una tabella senza fare un ciclo?

    Ho per esempio:
    tabella1
    a,b,c,d,e

    tabella2
    a,c,f,g,h

    vorrei un comando unico per fare l'insert dei dati presenti in "tabella2" che eviti valori doppi, al fine di avere in tabella1 i seguenti valori

    a,b,c,d,e,f,g,h

  2. #2
    puoi provare con una cosa del tipo

    codice:
    INSERT INTO tabella1
    (elenco_colonne)
    SELECT 
    (elenco_colonne)
    FROM tabella2 
    WHERE colonna_chiave NOT IN (SELECT colonna_chiave FROM tabella1)
    va bene per pochi dati, se sono tanti trasforma la WHERE...NOT IN in una JOIN

  3. #3
    Sei un grande!!
    Qualche altra domanda:

    cambia il tempo di inserimento se in tabella1 ho 100.000 record oppure ho 1.000 record?
    Credo che un pò sia più lungo, ma di quanto?

    Ti spiego, io ho creato la mia applicazione però impiega tantissimo tempo per completare ogni operazione quindi sto cercando di migliorare le prestazioni, e sto rifacendo tutto da capo.

  4. #4
    peggy, io cosa ne so? non conosco la tua app, non so come hai strutturato il tuo db, non sono davanti al tuo pc. abbi pietà

  5. #5
    scusami, cerchiamo di arrivarci... mi è fondamentale..

    Io ho tabella1 con 100.000 record e devo utilizzare la query che mi hai indicato prima, se la stessa query la utilizzo con tabella1 avente 1.000 record, cambiano i tempi di completamento della query?
    Facendo un esempio tabella1 ha, oltre all'Id, un campo cognome così come tabella2.

  6. #6
    "penso" di sì, ma non posso quantificartelo! del resto te lo avevo già detto nel mio primo post

  7. #7
    faccio un po di test per capire meglio, grazie!!

    Un altra query (sto esagerando?):

    Ho per esempio:
    tabella1
    a - casa
    b - casa
    c - casa

    tabella2
    a - macchina
    c - città

    una query unica che sostituisce in tabella1 il valore del campo2 con il valore di campo2 di tabella2. Questo deve avvenire quando il valore di campo1 in tabella2 è uguale al valore di campo1 di tabella1

    quindi in base alle tabella dell'esempio sopra dovrei avere in tabella1 questo risultato:
    a - macchina
    b - casa
    c - città


    scusami, ti prego... questa è la penultima query poi posso testare tutto e buttare l'applicazione termata ieri ma troppo lenta.

  8. #8
    ma santa crespella, le regole le conosci! un problema, un thread

  9. #9
    Sto iniziando con le prove delle varie query, questa mi da errore, io l'ho impostata così:
    codice:
    strq = "INSERT INTO tabella (campo1,campo2,campo3,campo4,campo5) SELECT (campo1,campo2,campo3,campo4,campo5) FROM tabellatemporanea WHERE campo1 NOT IN (SELECT campo1 FROM tabella)"
    co.execute (strq)
    mi da questo errore:
    Microsoft OLE DB Provider for ODBC Drivers error '80004005'

    [MySQL][ODBC 3.51 Driver][mysqld-5.0.92-enterprise-gpl-log]Operand should contain 1 column(s)

  10. #10
    posta la query reale, pls

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.