Elikkä kysymys koskee kahden eri mittaisen taulukon liittämisestä. Toisessa talulukossa on kolme riviä ja 2 saraketta (;=solujen väli) esim:
1;2
2;34
3;44
Toisessa taas kaksi riviä ja saraketta esim:
1;33
3;23
Miten saan nuo liitettyä niin että lopputulos on "automaattisesti" seuraavanlainen:
1;2;1;33
2;34;;
3;44;3;23
Elikkä niin että jälkimmäisestä taulukosta rivit menevät oikeille paikoilleen ekaan taulukkoon. Elikkä taulukkojen 1. sarakkeiden numerot "löytävät toisensa".
Yllä hyvin yksinkertaistettu taulukko, mutta jos rivejä on tuhansia on manuaalinen liittäminen hankalaa.
Varmaan ihan simppeli homma mutta vasta-alkajana en keksi miten moinen toteutetaan.
Kiitos!
Kysymys taulukoiden yhdistämisestä
5
1421
Vastaukset
- Magi_Suuri
Jos tekstitiedostojen kanssa pelaat, Linuxissa/Unixissa tuo menisi seuraavalla komennolla:
$ join f1.txt f2.txt -t ';' -a 1
1;2;33
2;34
3;44;23
jos yhdistettävät tiedot ovat tiedostoissa f1.txt ja f2.txt. Erotinmerkki asetetaan -t:llä. Muuten tehdään tavallinen join, mutta -a-parametrilla vastaamattomat rivit otetaan ensimmäisestä tiedostosta.- Mikes
Kiitos vastauksesta!
Elikkä käyttis on XP ja tiedosto on excel/Open office taulukko. Siis Open Office taulukkolaskennassa näitä yritin yhdistellä. Tosin nuo tiedostot on kyllä myös tekstitiedostoina joten voi ne liittää ennen taulukkona avaamistakin. Ajattelin jos ne saisi avattua samaan Open office taulukkoon (siis ensin toinen auki ja lisätään tähän toinen copy pastella) ja taulukkolaskenta osaisi jollain komennolla järjestää rivit oikein.
Kiitos! - Magi_Suuri
Mikes kirjoitti:
Kiitos vastauksesta!
Elikkä käyttis on XP ja tiedosto on excel/Open office taulukko. Siis Open Office taulukkolaskennassa näitä yritin yhdistellä. Tosin nuo tiedostot on kyllä myös tekstitiedostoina joten voi ne liittää ennen taulukkona avaamistakin. Ajattelin jos ne saisi avattua samaan Open office taulukkoon (siis ensin toinen auki ja lisätään tähän toinen copy pastella) ja taulukkolaskenta osaisi jollain komennolla järjestää rivit oikein.
Kiitos!Ok, luulin että tiedot olivat tekstitiedostossa, kun esitit ne tuolla puolipistemerkinnällä.
No se mitä ylläoleva teki oli kahden tietokantataulun join-operaation. En tiedä saako moista tehtyä Calcissa helposti, taitaa Basella olla helpointa.
Koska haluat myös toisen taulun rivin vaikka vastinetta ei löytyisikään toisesta, olisi kyseessä "FULL OUTER JOIN"-kysely. OpenOffice ei käsittääkseni tue tätä kyselyä kevyessä XML-pohjaisessa tietokantamuodossa (joillain muilla muodoilla se toimii), mutta jos toispuoleinen ratkaisu riittää niin LEFT OUTER JOIN ja RIGHT OUTER JOIN toimivat.
Eli tehdään kaksi taulua Taulu1 ja Taulu2, joissa on "id" pääavaimena. Tehdään seuraavanlainen SQL-kysely:
SELECT * FROM { OJ "Taulu1" LEFT OUTER JOIN "Taulu2" ON "Taulu1"."id" = "Taulu2"."id" }
tai hieman siistimmin:
SELECT "Taulu1"."id", "Taulu1"."arvo", "Taulu2"."arvo" FROM { OJ "Taulu1" LEFT OUTER JOIN "Taulu2" ON "Taulu1"."id" = "Taulu2"."id" } - Mikes
Magi_Suuri kirjoitti:
Ok, luulin että tiedot olivat tekstitiedostossa, kun esitit ne tuolla puolipistemerkinnällä.
No se mitä ylläoleva teki oli kahden tietokantataulun join-operaation. En tiedä saako moista tehtyä Calcissa helposti, taitaa Basella olla helpointa.
Koska haluat myös toisen taulun rivin vaikka vastinetta ei löytyisikään toisesta, olisi kyseessä "FULL OUTER JOIN"-kysely. OpenOffice ei käsittääkseni tue tätä kyselyä kevyessä XML-pohjaisessa tietokantamuodossa (joillain muilla muodoilla se toimii), mutta jos toispuoleinen ratkaisu riittää niin LEFT OUTER JOIN ja RIGHT OUTER JOIN toimivat.
Eli tehdään kaksi taulua Taulu1 ja Taulu2, joissa on "id" pääavaimena. Tehdään seuraavanlainen SQL-kysely:
SELECT * FROM { OJ "Taulu1" LEFT OUTER JOIN "Taulu2" ON "Taulu1"."id" = "Taulu2"."id" }
tai hieman siistimmin:
SELECT "Taulu1"."id", "Taulu1"."arvo", "Taulu2"."arvo" FROM { OJ "Taulu1" LEFT OUTER JOIN "Taulu2" ON "Taulu1"."id" = "Taulu2"."id" }Kiitos vastauksesta. En tosin tiedä edes mikä base on joten pitää keksiä toinen keino. Eiköhän se tuosta lutviinnu.
- Magi_Suuri
Mikes kirjoitti:
Kiitos vastauksesta. En tosin tiedä edes mikä base on joten pitää keksiä toinen keino. Eiköhän se tuosta lutviinnu.
OpenOfficen tietokantaohjelma. Mutta jos et tiedä mikä se on, voi tuon tekeminen sillä olla turhan työlästä, vaikkakin ehkä opettavaista.
Calcilla tuon saa tehtyä käyttämällä Calcin VLOOKUP-funktiota hakemaan tiedon kakkostaulukosta ykköstaulukon tunnistenumeron perusteella. Tällä saa haettua vastineet vain toisen taulukon perusteella, eli jos haluaa molempiin suuntiin, pitää tehdä sama juttu molemmille taulukoille. Sitten kopioidaan tulokset peräkkäin, järjestetään ja suodatetaan duplikaatit pois. Tässä on jonkin verran käsityötä, mutta onnistuu kyllä.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Ruotsissa uusi vakava ongelma: Vanhusten seksuaalinen hyväksikäyttö
palvelutaloissa ja kotihoidossa. Tämäkin on ihan puhtaasti väärän maahanmuuton vaikutusta, sillä tekijät ovat kaikki keh731920Työeläkkeiden maksaminen lopetettava ASAP.
"Vanhimmat sukupolvet ovat saaneet vastinetta eläkemaksuilleen moninkertaisesti nykyisiin ja tuleviin sukupolviin verr971663- 1471207
- 59688
- 198652
Järkytys uutisten ystäville - Huomenta Suomen kesään iso muutos
Huomenta Suomi on monen suomalaisen vakio-ohjelma. Suorana nähtävä Huomenta Suomi seuraa päivän tärkeimpiä uutisia, pol6636Trumpille jälleen voitto
Trump ensin tuhosi Iranin ydinohjusprojektin, jotta ko. terroristivaltio ei voisi aiheuttaa ydinsotaa. Ja nyt Trump pako191553- 54547
- 46488
Haluan teidät molemmat elämääni
Toista rakastan todella syvästi, ja toinen on kuin paras ystävä minulle. En voi luopua kummastakaan... </337462