- Home
- Categorie
- Coding e Sistemistica
- Coding
- Copia tabella su altra tabella
-
@peterminnow said:
Ok ora provo
è tutto ok con questa:$query = "INSERT IGNORE INTO weborders_clienti (idCliente,Nome,NomeUtente,Email,Password) SELECT id,name,username,email,password FROM weborders_users WHERE id!=' '";
ora come ultimo problema come dicevo prima è prendere qualche dato anche da un'altra tabella "weborders_comprofiler" da inserire sempre nella tabella "weborders_clienti"
oltre a rigraziarti davvero tantissimo, vorrei darti ovviamente, dopo tanto lavoro, il motivo per il quale mi serve di replicare alcuni dati di _users e _comprofiler in _clienti, il quale è che quella tabella viene letta da un software (chiuso) non modificabile!
ciao..nel frattempo continuo a trovare soluzione per quanto sopra......ma se hai tempo sicuramente la soluzione se tu!
-
se mi dici qual è la chiave che accomuna i campi delle due tabelle ti scrivo il codice
-
La tabella weborders_clienti
Nome,Cognome,NomeUtente,Password,PI_CF,Telefono,Email,Indirizzo,NCivico,Cap,Citta,Provincia,Societa,Consegna,Pagamento,Fattura,Attivo
La tabella weborders_users
name,username,email,block
La tabella weborders_comprofiler
lastname, firstname,cb_picf,cb_telefono,cb_indirizzo,cb_cap,cb_citta,cb_provincia,cd_societa,cb_fattura,cb_consegna,cb_pagamenti
-
ci deve essere un campo comune alle 2 tabelle cmprofiler e users per poter fare un join...cioè un campo che identifichi univocamente uno stesso utente (ad esempio) in entrambe le tabelle
-
si hai ragione la tabella "weborders_users" ha un id con stessa numerazione dell'**id **nella tabella "weborders_comprofiler"
inoltre questa ultima tabella ha anche un campo di nome **user_id **che riporta la stessa nemerazione dei precedenti **id
**a cosa potrebbe servire a Jooomla questo non lo so!
-
se ho capito bene ti serve una cosa del genere:
$query = "INSERT IGNORE INTO weborders_clienti (idCliente,Nome,NomeUtente,Email,Password,Indirizzo) SELECT u.id,name,u.username,u.email,u.password,c.cb_indirizzo FROM weborders_users AS u INNER JOIN weborders_comprofiler AS c ON u.id = c.id WHERE u.id!=' '";
questa è la struttura e credo vada bene...poi la devi personalizzare chiaramente
-
ora provo...a costo di stare qui fino a domani mattina!!!
-
allora non ci sono errori....ma cio che si trova su weborders_users viene riportaro correttamente come prima, mentre ad esempio l'indirizzo che si trova in weborders_comprofiler no...l'unica chiamata che si trova qui (idCliente,Nome,NomeUtente,Email,Password,Indirizzo)
annullo tutto okok.....ho sbagliato io sembra ok....ora vado avanti con la personalizzazione
-
TUTTO PERFETTO!!!
forse una cosa che si potrebbe fare è l'aggiornamento dei dati...qualora l'utente (tramita la modifica del profilo in Joomla) modifica i suoi dati
-
ottimo...per l'update credo che si possa fare...
-
ok...prendiamoci la pausa, la notte porta consiglio!!...ti sono veramente riconoscente, è tutto perfetto!!
-
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?
-
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
-
direi che con MSYQL ci giochi a PALLONE!
...mi basterebbe 1/4 dei tuoi PALLEGGI!!!
-
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!=' '";
-
$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
-
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
-
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
-
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
-
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