Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di slyper
    Registrato dal
    Jul 2011
    Messaggi
    61

    query di parifica (Sql su mysql)

    Salve a tutti
    utilizzo MySql ver. 5.0.67, ho due tabelle Tab1 e Tab2 e ho la necessita' di aggiornare un campo vuoto di Tab1 prelevando il dato (numerico "campo codifica" del comune di Tab2) dal confronto tra il campo del luogo di nascita di Tab1 e il campo "comune" di Tab2. Riepilogando il campo vuoto si deve quindi riempire del codice numerico corrispondente al comune di Tab2. Purtroppo dal confronto non tutti i comuni vengono trovati (per motivi di trascrizione, comuni aboliti, etc) e per quest'ultimo caso il campo vuoto vorrei porlo a "1". con la seguente query purtroppo riesco solo ad aggiornare i comuni trovati tralasciando i campi senza corrispondenza
    codice:
    UPDATE Tab1 INNER JOIN Tab2 ON Tab1.Luogo_nascita = Tab2.comune SET Tab1.Cod_luognasc = Tab2.codifica
    WHERE tab1.Luogo_nascita = Tab2.comune
    Grato per un prezioso aiuto ringrazio

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    dipende dal fatto che non stai facendo un left join, in primis.
    in versione brutale... che ti frega, fai un secondo update e poni a 1 quelli che hanno il campo vuoto

  3. #3
    Utente di HTML.it L'avatar di slyper
    Registrato dal
    Jul 2011
    Messaggi
    61
    ti ringrazio ,.. ci avevo pensato...e, comunque con calma e per fini puramente didattici ti sarei grato se tempo volendo potresti spiegarmi come impostare la query con left join

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    a rigore non è una query

    comunque in generale son fatte così
    codice:
    UPDATE tabella AS t1  LEFT JOIN dettagli AS t2 ON t1.campojoin = t2.campojoin
     SET 
     t2.campochevuoi=t1.campoche vuoi, t1.campochevuoi=t2.campoche vuoi 
    WHERE
    (t1.quellochevuoi= booo) AND
    (t2.quellochevuoi= booo2);

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    a rigore non è una query

    comunque in generale son fatte così

    UPDATE tabella AS t1 LEFT JOIN dettagli AS t2 ON t1.campojoin = t2.campojoin
    SET
    t2.campochevuoi=t1.campoche vuoi, t1.campochevuoi=t2.campoche vuoi
    WHERE
    (t1.quellochevuoi= booo) AND
    (t2.quellochevuoi= booo2);

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    a rigore non è una query

    comunque in generale son fatte così

    UP DATE tabella AS t1 L EFT JO IN dettagli AS t2 ON t1.campojoin = t2.campojoin
    SE T
    t2.campochevuoi=t1.campoche vuoi, t1.campochevuoi=t2.campoche vuoi
    WH ERE
    (t1.quellochevuoi= booo) AND
    (t2.quellochevuoi= booo2);

    ho dovuto pasticciare un po' perchè il forum non "suzzava" :zizi:

  7. #7
    Utente di HTML.it L'avatar di slyper
    Registrato dal
    Jul 2011
    Messaggi
    61
    poichè mi sono perso ti posto quanto capito con la speranza che tu possa correggermela
    in quanto come risultato ottengo che pwer tutti i comuni trovati me li pone a 1
    lasciandomi vuoti quelli che non trova quando il mio intento e quello di inserire nel campo in cui non viene trovata la corrispondenza il valore 1
    codice:
    UPDATE arch_fe AS t1  LEFT JOIN comuni AS t2 ON 
    t1.Luogo_nascita = t2.comune
     SET 
     t2.codifica=t1.Cod_luognasc, t1.Cod_luognasc=t2.codifica 
    WHERE
    (t1.Cod_luognasc = 1) AND (t2.codifica = 1)
    grazie per la collaborazione

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    quindi essenzialmente il tuo problema è settare a 1 i campi della tabella2 che non hanno corrispondenza con la tabella1?

    Il modo più rapido da scrivere (ma di pessime prestazioni per mysql) è qualcosa del genere

    update tabella2 set quello-che-vuoi=1 where campojoin not in (select campojoin from tabella1)

    avendo una subquery dipendente è una delle situazioni peggiori, normalmente si fa una join "furba".

    sto per andare a cena, se ti basta bene, sennò prima o poi ci guardo

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    quindi essenzialmente il tuo problema è settare a 1 i campi della tabella2 che non hanno corrispondenza con la tabella1?

    Il modo più rapido da scrivere (ma di pessime prestazioni per mysql) è qualcosa del genere

    up date tabella2 set quello-che-vuoi=1 w here campojoin not in (se lect campojoin fr om tabella1)

    avendo una subquery dipendente è una delle situazioni peggiori, normalmente si fa una join "furba".

    sto per andare a cena, se ti basta bene, sennò prima o poi ci guardo

  10. #10
    Utente di HTML.it L'avatar di slyper
    Registrato dal
    Jul 2011
    Messaggi
    61
    grazie e buona cena
    comunque il problema è settare a 1 campi ( Cod_luognasc) della tabella1 (arch_fe) che non hanno corrispondenza con la tabella2 (comuni)

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.