• User Attivo

    Tutto Ok, questa è la query definitiva provata e funzionante:

    $query = "INSERT IGNORE INTO weborders_clienti (idCliente,Nome,Cognome,NomeUtente,Password,PI_CF,Telefono,Email,Indirizzo,NCivico,Cap,Citta,Provincia,Societa,Consegna,Pagamento,Fattura,Attivo) SELECT u.id,c.firstname,c.lastname,u.username,u.password,c.cb_picf,c.cb_telefono,u.email,c.cb_indirizzo,c.cb_numerocivico,c.cb_cap,c.cb_citta,c.cb_provincia,c.cb_societa,c.cb_consegna,c.cb_pagamenti,c.cb_fattura,c.confirmed FROM weborders_users AS u INNER JOIN weborders_comprofiler AS c ON u.id = c.id WHERE u.id!=' '";

    ...se abbiamo tempo e soluzione per fare l'UPDATE come dicevamo diventerebbe perfetta!!

    Una cosa volevo chidere: la lettera u e la lettera **c **come sono saltate fuori?


  • User Attivo

    Sono venute fuori da questo pezzo qui:

    FROM weborders_users AS u INNER JOIN weborders_comprofiler AS c

    AS significa ALIAS...ossia scrivendo weborder_users AS u io assegno un nome alternativo (in questo caso u) a weborder_users. Così facendo posso scrivere in modo più comodo e leggibile la query.

    Avrei anche potuto non usare l'alias, ma in tal caso mi sarei ritrovato a scrivere:

    $query = "INSERT IGNORE INTO weborders_clienti (idCliente,Nome,Cognome,NomeUtente,Password,PI_CF, Telefono,Email,Indirizzo,NCivico,Cap,Citta,Provinc ia,Societa,Consegna,Pagamento,Fattura,Attivo) SELECT weborder_users.id,weborder_comprofiler.firstname,weborder_comprofiler.lastname,weborder_users.username,weborder_users.password.....

    capisci che è scomodo e poco chiaro


  • User Attivo

    direi che con MSYQL ci giochi a PALLONE!
    ...mi basterebbe 1/4 dei tuoi PALLEGGI!!!


  • User Attivo

    Avrei trovato qualcosa quì

    http://guide.dada.net/database/interventi/2001/05/45041.shtml

    ...ma non riesco!

    sto facendo una prova con questo...ma ovviamente non funziona!

    $query = "UPDATE weborders_clienti SET Email = SELECT email FROM weborders_users WHERE id!=' '";


  • User Attivo

    $query = "UPDATE weborders_clienti SET Email = (SELECT email FROM weborders_users WHERE id!=' ')";

    così è già più corretta ma devi anche dirgli dove fare l'update però

    se vuoi fare l'update su tutte le righe usa REPLACE


  • User Attivo

    infatti l'errore che mi torna è questo:

    UPDATE weborders_clienti SET Email = (SELECT email FROM weborders_users WHERE id!=' ')Subquery returns more than 1 row

    stesso errore con REPLACE

    REPLACE weborders_clienti SET Email = (SELECT email FROM weborders_users WHERE id!=' ')Subquery returns more than 1 row


  • User Attivo

    perchè devi aggiungere un WHERE esterno:

    REPLACE weborders_clienti SET Email = (SELECT email FROM weborders_users WHERE id!=' ') WHERE id != ' '

    però ti serve anche un'altra condizione di corrispondenza affinchè la query sia eseguita con criterio e non sovrascriva valori sballati


  • User Attivo

    okm ora provo..infatti stavo provando con questa:

    $query = "UPDATE weborders_clienti SET Email = (SELECT email FROM weborders_users WHERE email) WHERE Email";

    ..non mi dà errore ma nemmeno la modifica!!

    ora provo la tua


  • User Attivo

    mi da questo errore:

    REPLACE weborders_clienti SET Email = (SELECT email FROM weborders_users WHERE id!=' ') WHERE id !=' 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id !=' '' at line 1


  • User Attivo

    scusa...avevo sbagliato a copiare e incollare!

    Non volevo scrivere:

    REPLACE weborders_clienti SET Email = (SELECT email FROM weborders_users WHERE id!=' ') WHERE id !=' '

    ma

    UPDATE weborders_clienti SET Email = (SELECT email FROM weborders_users WHERE id!=' ') WHERE id !=' '

    però devi aggiungere un AND e un'altra condizione perchè funzioni correttamente


  • User Attivo

    sto provando questa:

    $query = "UPDATE weborders_clienti SET Email = (SELECT email FROM weborders_users WHERE id!=' ') WHERE Email AND email";

    ...non mi dà errore ma nemmeno la modifica!


  • User Attivo

    cosa significa: WHERE Email AND email" ??


  • User Attivo

    sai quando una cosa non si studia dalle basi, e quindi sapere cosa si fà, questo è il risultato!
    cerco di mettercela tutta per capire...ma forse sto iniziando con una auto di grossa cilidrata!


  • User Attivo

    beh te la stai cavando bene mi pare!

    cmq la mia domanda di prima era per cercare di capire cosa volessi fare con quella istruzione...forse è solo scritta male...


  • User Attivo

    ...in realtà cercavo di mettere in pratica ciò che avevo trovato a questo indirizzo:

    http://guide.dada.net/database/interventi/2001/05/45041.shtml

    Come per la insert vanno rispettati tutti i constraint e le dimensioni e i tipi dei campi. Quindi non e' possibile modificare un numero e sostituirlo con una stringa, annullare il valore di una colonna not null ecc.
    E' possibile modificare uno o piu' record andando a prendere il valore da un'altra tabella o dalla stessa, ad esempio supponiamo di voler spostare MARIO BIANCHI nella stessa sede di PAOLO VERDI.
    Potremmo andare a leggere, con una select, dalla tabella impiegati la sede del sig. VERDI e successivamente, con una update modificare la sede del sig. BIANCHI, oppure fare tutto con una sola istruzione:

    UPDATE impiegati
    set sede = (SELECT sede FROM impiegati WHERE nome = 'PAOLO' AND cognome='VERDI')
    WHERE nome = 'MARIO' AND cognome ='BIANCHI';

    ma non sembra che ci stia riuscendo!


  • User Attivo

    allora con questa:

    $query = "UPDATE weborders_clienti SET Email = (SELECT email FROM weborders_users WHERE Email)";

    si cancellano tutte le mail in weborders_clienti! quindi forse è la strada giusta!!...la vedo molto lunga


  • User Attivo

    scusate l'insistenza....ma cerco di andare avanti un po per tentativi ed un po su manuali, e quindi sto provando e riprovando con questa istruzione UPDATE.
    Ad esempio con questa:

    $query ="UPDATE weborders_clienti SET Email=5 WHERE Email!=' '";

    inserisco il numero 5 in tutti i campi Email della tabella **weborders_clienti

    **quindi ora se invece del numero 5 io devo inserire dei dati che devo prendere da un'altra tabella, ad esempio weborders_users al posto del 5 dovrei inserire (SELECT email FROM weborders_users WHERE Email) ma cosi facendo invece mi cancella tutte le Email in **weborders_clienti, **quindi già partendo con questa semplice cosa non funziona, figuriamoci che poi i campi su dove devo fare UPDATE sono diversi!!...ma almeno la soddisfazione di risolvere dalle cose più semplici!
    Grazie cmq del sostegno avuto fino ad ora, che non è stato poco!
    ciao a tutti Peter


  • User Attivo

    $query = "UPDATE weborders_clienti SET Email = (SELECT email FROM weborders_users WHERE email) WHERE Email!=' '";


  • User Attivo

    se ad esempio provo questa e i di weborders_clienti sono vuoti, non mi da errore ma nemmeno inserisce dati.
    Se invece i campi sono pieni, ossia ci sono email inserite l'errore è questo:

    UPDATE weborders_clienti SET Email = (SELECT email FROM weborders_users WHERE email!=' ') WHERE Email !=' 'Subquery returns more than 1 row

    pardon era errata la query, ora ho provato questa:
    $query = "UPDATE weborders_clienti SET Email = (SELECT email FROM weborders_users WHERE email) WHERE Email!=' '";

    che cmq cancella tutte le mail nella tabella weborder_clienti


  • User Attivo

    nulla non funziona!!!!