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

    [MySql] Cercare corrispondenze tra due database

    Salve ragassuoli...

    Come faccio a cercare delle corrispondenze tra due diversi database?

    Esempio:

    Database 1 -> nella tabella utenti c'è memorizzato agostino nel campo username.

    Database 2 -> nella tabella members c'è memorizzato agostino nel campo nickname


    Dovrei riuscire a capire se agostino è inserito in entrambi i database e ricavarne i dati.

    (Mysql 4.1)

    Grazie a tutti...
    I hate to feel the Love beetwen us die...
    This is our last embrace...


    IndiSound.net - La musica italiana indipendente
    Bertuccia.com - Chat, Forum e Galleria Fotografica...

  2. #2
    mi sa che devi fare due query.. non mi risulta si possa fare una query su due database contemporaneamente.. poi non so

    cmq ci potrebbe essere anche un errore a monte nell'aver progettato così la base di dati eh


  3. #3
    fai una copia di una tabella nell'altro db e poi fai una JOIN cercando i dati dove username = nickname.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    [supersaibal]Originariamente inviato da }gu|do[z]{®©
    cmq ci potrebbe essere anche un errore a monte nell'aver progettato così la base di dati eh

    [/supersaibal]
    Sono database di due software indipendenti...

    [supersaibal]
    fai una copia di una tabella nell'altro db e poi fai una JOIN cercando i dati dove username = nickname.

    [/supersaibal]

    uhm...mumble mumble...grande idea...

    praticamente poi lavoro su un unico db...

    potrebbe essere una strada...però dovrei chiudere i db per le operazioni altrimenti mi perdo nuove registrazioni ecc...

    Ci provo...

    Grazie mille ad entrambi
    I hate to feel the Love beetwen us die...
    This is our last embrace...


    IndiSound.net - La musica italiana indipendente
    Bertuccia.com - Chat, Forum e Galleria Fotografica...

  5. #5
    Scusatemi ragassuoli...rieccomi qui.

    dunque ho unito i due db come suggeritomi

    eseguendo una query tipo questa:
    Codice PHP:
    SELECT tabella1.name,tabella.id,tabella2.username,tabella2.userid
            FROM database
    .tabella1 LEFT JOIN tabella2 ON
                tabella1
    .name tabella2.username
            LIMIT 
    ". $limit .",50
    la variabile $limit la passo via get in modo da poter visualizzare 50 risultati alla volta...

    tutto bene fino ai mille risultati...poi va tutto in gallina per l'execution time.

    I record sono circa 4000 a tabella...e non riesco a pensare a niente di più ottimizzato..

    Qualche dritta?
    I hate to feel the Love beetwen us die...
    This is our last embrace...


    IndiSound.net - La musica italiana indipendente
    Bertuccia.com - Chat, Forum e Galleria Fotografica...

  6. #6
    4000 record non dovrebbero fargli un baffo

    non è che hai altri problemi nella pagina?
    prova a fare solo la query e levare il resto... non dovrebbe darti timeout...


    PS: nick petrucci, e avatar di jeff.... mi vuoi sedurre..


  7. #7
    [supersaibal]Originariamente inviato da }gu|do[z]{®©
    4000 record non dovrebbero fargli un baffo

    non è che hai altri problemi nella pagina?
    prova a fare solo la query e levare il resto... non dovrebbe darti timeout...


    PS: nick petrucci, e avatar di jeff.... mi vuoi sedurre..

    [/supersaibal]
    Guarda...ho fatto un'altra prova, invertendo le due tabelle nel JOIN.
    Praticamente la query ora è questa
    Codice PHP:
    FROM database.tabella2 LEFT JOIN tabella1 ON 
                tabella1
    .name tabella2.username 
    E va che è una scheggia...
    non ne sono sicuro ma il motivo credo stia nel fatto che nel secondo db il campo "name" è un index..giusto?


    Ps:fossi donnina...
    I hate to feel the Love beetwen us die...
    This is our last embrace...


    IndiSound.net - La musica italiana indipendente
    Bertuccia.com - Chat, Forum e Galleria Fotografica...

  8. #8
    no..la spiegazione non è nell'index. Rendendo indice anche il campo name non si risolve niente...

    come mai succede allora? :master:
    I hate to feel the Love beetwen us die...
    This is our last embrace...


    IndiSound.net - La musica italiana indipendente
    Bertuccia.com - Chat, Forum e Galleria Fotografica...

  9. #9
    [supersaibal]Originariamente inviato da petrucci
    no..la spiegazione non è nell'index. Rendendo indice anche il campo name non si risolve niente...

    come mai succede allora? :master: [/supersaibal]
    bisognerebbe analizzare la struttura delle due tabelle.

    Intanto dovresti togliere il riferimento al database... "FROM database.tabella2"

    codice:
    SELECT  t1.name, t1.id,
            t2.username, t2.userid
            FROM tabella1  t1
            LEFT JOIN tabella2 t2 ON  t1.name = t2.username
            LIMIT ". $limit .",50;
    se cercasse degli id numerici sarebbe piu' performante. Dovrebbero essere indicizzati entrambi i campi dove cerchi l'uguaglianza. Solo uno serve a poco.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Grazie Piero,

    ho usato la struttura che mi hai suggerito.

    La tabella t1 ha name come index:
    la tabella t2 no

    Così facendo la query è molto lenta.

    Se invece faccio

    SELECT ecc...
    FROM tabella2 t2 (quella senza indice) LEFT JOIN tabella1 t1(name come indice)

    è velocissimo.

    provando col primo metodo, anche a mettere come indice il campo username in t2 va sempre lenta.

    non me lo spiego
    I hate to feel the Love beetwen us die...
    This is our last embrace...


    IndiSound.net - La musica italiana indipendente
    Bertuccia.com - Chat, Forum e Galleria Fotografica...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.