Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    55

    Caratteri jolly in query

    Eccomi di nuovo

    Volevo chiedere: se ho 2 tabele uguali e volessi trasferire i dati di una riga da una all'altra...

    di solito uso :

    $query = "INSERT INTO tabella1 (cmapo_1,campo_2,campo_3,campo_n) SELECT campo_1,campo_2,campo_3,campo_n FROM tabella2 WHERE id='$id'";
    Pero' ,essendo che la struttura delle 2 tabelle è identica, volevo sapere se c'è modo di usare * in questo caso,

    Una cosa del tipo:

    $query = "INSERT INTO tabella1 (*) SELECT * FROM tabella2 WHERE id='$id'";
    ... che , ovviamente, non funziona.

    Ciao e grazie.

  2. #2
    basta non mettere i campi.

    codice:
    $query = "INSERT INTO tabella1 
              SELECT * FROM tabella2 
              WHERE id = '$id'";
    il problema potrebbe essere dato dalla chiave primaria se con valori doppi.

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

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    prova così

    INSERT INTO tabella1 SELECT * FROM tabella2 WHERE id='$id'


    edit.ops

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    55
    Funziona, grazie !!!
    Siete mitici come sempre

    Pero' Piero.mac ha sollevato un giustissimo problema a cui non avevo pensato ... i primary key !

    Le 2 tabelle hanno chiavi primarie indipendenti e , se uso il SELECT * mi sovrascrive anche gli id.

    Esiste un modo per copiare tutto * eccetto un campo (in questo caso il campo ID)?

  5. #5
    nel caso di campi da omettere o da rinominare non ti rimane che fare la lista dei soli campi da trattare, sia nell'INSERT e sia nella SELECT, con lo stesso ordine.

    ci sono alcune clausole come IGNORE o ON DUPLICATE KEY UPDATE.... ma non mi pare facciano al caso tuo. Se ho capito bene vuoi aggiungere in una tabella per i fatti suoi (cioe' con la sua chiave primaria) dei record identificati con un id di altra tabella, senza per questo ci debba necessariamente essere corrispondenza tra gli id delle chiavi primarie delle due tabelle.

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

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.