van 2 tabellen 1 maken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ellen Skapandi

Ellen Skapandi

03/08/2015 19:16:52
Quote Anchor link
Ik heb 2 tabellen in mijn database:
- module_nieuws, afkomstig van een oude website, archief van 10.000 nieuwsitems
- posts, met tabellen, horende bij de nieuwe website, leeg

Hoe krijg ik deze beide tabellen samen? Kan dit met een query of moet dit handmatig omdat de nieuwe tabel nog leeg is?

In de beide tabellen komt de functie van de structuur op een aantal punten overeen, ze heten niet hetzelfde (voorbeeld: module_nieuws->publicatiedatum, posts->date). de gecombineerde tabel moet de structuur van posts hebben.
Gewijzigd op 03/08/2015 19:44:21 door Ellen Skapandi
 
PHP hulp

PHP hulp

13/11/2024 08:20:27
 
Thomas van den Heuvel

Thomas van den Heuvel

03/08/2015 19:52:49
Quote Anchor link
Je wilt dus de data van een tabel A overzetten/omzetten naar een tabel B, waarbij B op sommige punten afwijkt van structuur ten opzichte van A? Waarna A opgedoekt mag worden?
 
Ellen Skapandi

Ellen Skapandi

03/08/2015 19:56:17
Quote Anchor link
klopt
 
Thomas van den Heuvel

Thomas van den Heuvel

03/08/2015 20:31:59
Quote Anchor link
stap 1: maak een BACKUP, zodat je altijd terug kunt :)
als de oude situatie nog in gebruik is wil je mogelijk vantevoren wat downtime aankondigen en de site dan tijdelijk uit de lucht halen, maak dan vlak voor de conversie (zie verderop) een backup van de meest recente versie

stap 2: maak een zo volledig mogelijk ontwerp voor je nieuwe opzet en schrijf een conversiescript met heel veel verbale feedback (record 1 ok, record 2 ok, geen datum bij record 3, rare karakters bij record 4 et cetera)

stap 3: doe een of meer "dry runs" / conversietests op een test database, net zolang totdat alles in 1x goed wordt overgezet

stap 4: draai een tijdje met de nieuwe opzet op een testomgeving

stap 5: voer de conversie "voor eggies" uit (nadat je je site uit bedrijf hebt gehaald en nadat je een backup hebt gemaakt)
stap 5.1: maak het conversiescript onklaar of verwijder deze

stap 6: ruim je oude zut op den duur op als blijkt dat alles naar behoren werkt (maar bewaar je backup)

zoiets lijkt mij redelijk failsafe
 
Ellen Skapandi

Ellen Skapandi

03/08/2015 21:50:09
Quote Anchor link
ik heb van de oude database een uitdraai gekregen, zodat ik de nieuwe website op een nieuwe server kan opbouwen. Dus de lopende website blijft gewoon lopen.

Maar ik heb geen idee HOE ik de 2 tabellen zou moeten samenvoegen..
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

03/08/2015 22:43:43
Quote Anchor link
Het ligt eraan wat je wilt.
Wil je de oude data omzetten naar de nieuwe gegevens of wil je beide tabellen combineren.

In het eerste geval:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
INSERT INTO nieuwe_tabel (kolom_n1, kolom_n2, kolom_n3)
SELECT kolom_o1, kolom_o2, kolom_o3 FROM oude_tabel


In het laatste geval:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT kolom_n1, kolom_n2, kolom_n3
FROM nieuwe_tabel

UNION
SELECT kolom_o1, kolom_o2, kolom_o3
FROM oude_tabel

Waarbij je rekening moet houden dat het resultaat de kolomnamen uit de eerste select heeft.
Gewijzigd op 04/08/2015 09:25:35 door Ger van Steenderen
 
Ellen Skapandi

Ellen Skapandi

03/08/2015 23:00:46
Quote Anchor link
er zijn een aantal tabellen die qua inhoud overeen en die moeten dan ook in de uiteindelijke database worden samengevoegd
(gaat om
nieuwe_tabel.post_title en oude_tabel.titel
nieuwe_tabel.post_date en oude_tabel.timestamp_publiceren
nieuwe_tabel.post_name en oude_tabel.google_url
nieuwe_tabel.post_content en oude_tabel.inhoud
nieuwe_tabel.post_excerpt en oude_tabel.inhoud_kort)

Daarnaast zijn er in beide databases nog tabellen die behouden moeten worden, dus optie 2 zou het beste zijn. Maar dat werkt niet, omdat de ene database geen entry's heeft en de andere 10.000. Ik krijg een melding "The used SELECT statements have a different number of columns" terug
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

04/08/2015 09:03:40
Quote Anchor link
Die melding heft niets te maken met het aantal rijen.

Met UNION moeten in beide selects hetzelfde aantal kolommen staan, dus is het handigste om geen SELECT * te gebruiken, maar de kolommen te benoemen.
Ik zet meestal de SELECT met de meeste kolommen eerst, de twee SELECT vul je dan aan met 'literals':
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT kolom_n1, kolom_n2, kolom_n3, kolom_n4, kolom_n5
FROM nieuwe_tabel

UNION
SELECT kolom_o1, kolom_o2, kolom_o3, NULL, NULL
FROM oude_tabel
 
Ellen Skapandi

Ellen Skapandi

04/08/2015 13:57:22
Quote Anchor link
Hiermee gaat de structuur van de oude database verloren?
Ik heb in de oude database nog een aantal tabellen staan die ik wel wil gehouden.
 
- Ariën  -
Beheerder

- Ariën -

04/08/2015 14:05:25
Quote Anchor link
Een SELECT selecteert alleen de informatie. Als alles naar behoren werkt, en je 100% zeker bent dat alles overgezet is verwijder je zelf de data uit de oude database. Altijd aan te raden om het nog even een paar weken aan te zien of alles goed is verlopen.
 
Ellen Skapandi

Ellen Skapandi

04/08/2015 14:25:27
Quote Anchor link
en hoe zet ik de structuur van beide tabellen naast elkaar en voeg ik de gegevens van uit de volgende kolommen samen?

nieuwe_tabel.post_title en oude_tabel.titel
nieuwe_tabel.post_date en oude_tabel.timestamp_publiceren
nieuwe_tabel.post_name en oude_tabel.google_url
nieuwe_tabel.post_content en oude_tabel.inhoud
nieuwe_tabel.post_excerpt en oude_tabel.inhoud_kort
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.