Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Problema MYSQL: query su piu' tabelle

    Ciao a tutti, un aiuto importante, spiego:

    - scarico un foglio Excell nel sever;
    - scansiono le righe del file Excell per fare l'INSERT in tabellaA
    - quando fa l'INSERT deve fare però alcuni controlli su altre tabelle, i controlli sono:
    a) verificare se il campo email di ogni record è presente nel campo email di tabellaA, tabellaB e tabellaC, se trova corrispondenza deve prendere il campo attivo del record corrispondente presente in una di queste 3 tabelle e impostarlo nel nuovo INSERT (avrà valore SI o NO).
    b) verificare se il campo email di ogni record è presente nel campo email di tabellaD e tabellaE, se trova corrispondenza deve prendere il campo settore del record che sto inserendo e impostarlo nel record corrispondente in tabellaD e tabellaE

    Riesco a fare questo lavoro con cicli ma ovviamente mi impalla il PC per mezz'ora, una o 2 query per risolvere?

    Spero di essere stato chiaro.

    Fammi sapere.

  2. #2
    se ci mette cosi tanto hai sicuramente sbagliato qualcosa.
    ad ogni modo preparati una stored procedure e vedrai che risolvi ma se arrivi a dover ricercare lo stesso dato su 4 o 5 tabelle significa che la struttura delle tabelle ha dei problemi!

  3. #3
    Ciao, grazie per la risposta.
    Una domanda che mi può riolvere il problema, qual'è il numero massimo di record per una tabella Mysql (Versione del server: 5.0.92-enterprise-gpl-log)?
    A che numero può arrivare il campo id che si autoincrementa?

  4. #4
    2^64 e fino a saturazione hdd

  5. #5
    Perfetto, grazie!!

    Un altro aiuto per una query utilizzando una sola tabella:

    quando vado a fare l'upload di nuovi dati (es. 100 righe) deve:
    a) inserire il record se non trova altri record con campo email uguale
    b) inserire il record se trova altri record con campo email uguale e campo attivo uguale a SI che abbiamo il campo gruppo con valore A
    c) modificare il campo settore (del record già esistente) se trova altri record con campo email uguale che abbiamo il campo gruppo con valore B

    Faccio esempio:

    dati attualmente presenti nel DB:

    id,email,gruppo,settore,attivo

    1 - a@a.it - A - casa - NO
    2 - b@b.it - A - macchina - SI
    3 - c@c.it - A - televisione - SI
    4 - d@d.it - B - telefono - SI
    5 - e@e.it - B - casa - SI
    6 - f@f.it - B - libri - NO


    dati che vado a caricare:

    email,gruppo

    in riferimento al punto A:
    g@g.it - B (questo lo inserisce perchè non trova corrispondenze uguali)

    in riferimento al punto B:
    c@c.it - B (questo lo inserisce perchè trova un record corrispondente con campo gruppo uguale a A e con valore attivo uguale a SI)

    in riferimento al punto C:
    e@e.it - B - ruota (in questo caso non lo inserisce perchè trova un record corrispondente con campo gruppo uguale, quindi modifica il campo settore del record esistente da casa a ruota)

    il risultato deve essere:
    1 - a@a.it - A - casa - NO
    2 - b@b.it - A - macchina - SI
    3 - c@c.it - A - televisione - SI
    4 - d@d.it - B - telefono - SI
    5 - e@e.it - B - ruota - SI (modificato)
    6 - f@f.it - B - libri - NO
    7 - g@g.it - B (inserito)
    8 - c@c.it - B (inserito)

    Spero sia chiaro.
    E' possibile fare una quesry unica?

  6. #6
    O devo fare un ciclo con i dovuti controlli?

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.