Onko mahdollista solut jotenkin yhdistää?
Rakenne on:
etunimi (varchar), sukunimi (varshar), osoite (varshar), puhelin (varshar)
Data on useasta lähteestä yhdistetty ja on epätäydellinen:
"Matti", "Virtanen", "NULL", "NULL"
"Matti", "Virtanen", "Osoite 123", "NULL"
"Matti", "Virtanen", "NULL", "123-321-123"
Ja nyt pitäisi nämä solut yhdistää, niin että lopputulos olisi:
"Matti", "Virtanen", "Osoite 123", "123-321-123"
Rakenne on:
etunimi (varchar), sukunimi (varshar), osoite (varshar), puhelin (varshar)
Data on useasta lähteestä yhdistetty ja on epätäydellinen:
"Matti", "Virtanen", "NULL", "NULL"
"Matti", "Virtanen", "Osoite 123", "NULL"
"Matti", "Virtanen", "NULL", "123-321-123"
Ja nyt pitäisi nämä solut yhdistää, niin että lopputulos olisi:
"Matti", "Virtanen", "Osoite 123", "123-321-123"
Vastaukset 6
Vanhimmat
Miksi ihmeessä, et tietojen syöttävaiheessa tarkistanut ja laittanut tietoja oikealle paikalle huomattavasti helpompaa?
Onnistuu toi kohtalaisen helposti nytkin.
1) Luo samanlainen taulu, kannattaa lisätä ainaskin yksinollinen id kenttä
2) Tee kysely
INSERT INTO `testi2` ( `nimi` , `sukunimi` , `osoite`)
SELECT nimi, sukunimi, osoite
FROM testi
WHERE
osoite IS NOT NULL
GROUP BY nimi,sukunimi
3) Tee kysely
SELECT nimi, sukunimi, puhelin
FROM testi
WHERE
puhelin IS NOT NULL
GROUP BY nimi,sukunimi
ja syötä normaalilla update kyselyllä tiedot oikealle paikalle. Kai ne tiedot sais suoraankin menemään, mutta en tiedä miten.
4) Tarkista onko tiedot uudessa taulussa oikein
5) Tuhoa vanha ja nimeä uusi vanhan nimellä.
Toi sinun systeemi hajoaa kun tuleekin samanniminen ihminen, tämän takia pitää olla joku yksilöivä tieto kuten id.... tällöin tietojen päivittäminen, poistaminen.... on helpompaa. Jos toi on jokin asiakasrekisteri jne.... niin useamman taulun juttu olisi kenties parempa tarkoitukseesi.
Noissa esimerkeissä testi = vanha taulu, testi2 = uusi taulu. Esimerkki mietitty nopeesti, joten parempia keinoja voi olla ja välttämättä esimerkki ei edes toimi kunnolla. Uusimmalla myslillä testasin ton.
>ja syötä normaalilla update kyselyllä tiedot oikealle paikalle.
Miten tuo tarkalleen onnistuu?
UPDATE taulu SET nimi = 'xxx', sukunimi = 'yyy' WHERE id = 123
Kaikki kentät, ei yksi kerrallaan.
Tuolla groupilla saa kaikki uniikkinimet uuteen taulukkoon, mutta miten muut tiedot saa päivitettyä?
Minun tietääkseni ainoa keino on toi UPDATElla yksitellen. Siis, teet scriptin pätkän joka tekee ton aikasemman mainitun kyselyn ja sitten vain silmukassa päivittelee tiedot uuteen taulukkoon oikealle paikalle.
Et siis syötä käsineen niitä tietoja yksitellen, joka olisi hidasta, varsinkin jos tietoja paljon.
UPDATE taulu SET joku="jotain" WHERE toinen="jotain"