Gegevens overhevelen tussen 2 tabellen die overeenkomen

Status
Niet open voor verdere reacties.

gridishere

Gebruiker
Lid geworden
5 nov 2009
Berichten
283
Hallo allemaal!

Aangezien ik een grote tabel heb met veel adressen die niet wijknamen bevat wil ik graag wat data overhevelen tussen 2 tabellen.

Tabel1 heeft deze wijknamen die achter elke postcode staan.

Tabel1
postal wijknaam (columns)

Tabel2 heeft alleen de postcodes en moet dus een gevulde column wijknaam krijgen en achter elke postcode moet dezelfde wijknaam komen als in Tabel1 staat.

Kan iemand me een sql query hier voor geven zodat dus Tabel2 met de reeds aanwezige postcodes zal worden voorzien met een column wijknamen die de wijknamen bevat uit Tabel1?

Tabel2
postal wijknaam (columns)

Bijvoorbaat dank voor deze hulp tijdens dit warme weer!! :cool:

Groet,

grid
 
Heb je de voorbeelden, is wel zo handig..
 
Jazeker die heb ik voor je:

Brontabel (table1):

Schermafdruk_2018_07_27_01_22_11.png


Doeltabel (table2):

Schermafdruk_2018_07_27_01_34_45.png
 
Laatst bewerkt:
Als xlsx is handiger...:d
 
Als xlsx is handiger...:d
Kan Excel dan overweg met SQL? We weten toch de veldnamen al, toch? ;)

Voor een conversie van data in mijn site heb ik iets soortgelijks gemaakt in SQL. Ik zal eens zoeken.
 
Laatst bewerkt:
Code:
INSERT INTO stratentabel (wijknaam)
  SELECT wijknaam
  FROM wijktabel WHERE stratentabel.postal=wijktabel.postal
 
Laatst bewerkt:
Aangezien ik een grote tabel heb met veel adressen die niet wijknamen bevat wil ik graag wat data overhevelen tussen 2 tabellen.
Een belangrijk onderdeel van database ontwerp is dat je dubbele data juist probeert te voorkomen. Jij hebt die situatie, en nu ga je met opzet data verdubbelen? Wonderlijk... Fiets je ook achterstevoren op een fiets? :)
 
Het lijkt me dat hij die andere tabel juist weg wil hebben. Of hij moet zin hebben om er een steeds een JOIN tussen te leggen.
Nog mooier zou zijn om toch een wijktabel te maken, met alle unieke wijken met een identifier eraan als ID-nummer, en deze koppelen aan de adressen.

maar de vraag is tot hoever je wilt normaliseren, want hoe vaak verandert een wijk van naam? In de meeste gevallen vervang je gewoon je om de zoveel tijd je hele postcode/adrestabel omdat er nou eenmaal straten bijkomen en gaan, en datzelfde is ook met huizen. Van horen zeggen is het zelfs logisch om elke week dit te verversen, als je up-to-date wilt blijven. Misschien is een directe koppeling met een webservice zoals postcode.nl wel een oplossing.
Dan heb je altijd directe gegevens beschikbaar, en hoef je niet zelf alles steeds te updaten.
 
Code:
INSERT INTO stratentabel (wijknaam)
  SELECT wijknaam
  FROM wijktabel WHERE stratentabel.postal=wijktabel.postal
Zou update functie gebruiken ipv insert. ;)

Code:
UPDATE table2 t2 LEFT JOIN table1 t1 ON
t1.postal = t2.postal
SET t2.wijknaam = t1.wijknaam;
 
Laatst bewerkt:
Kunnen wij ook die data bekomen dan kan ik mijn bot er eens laten overlopen en mogelijke fouten uit mijn lijst of uw lijst halen.

mijn tabel ziet er zo uit
CREATE TABLE `adres_location` (
`id` INT(9) NOT NULL AUTO_INCREMENT,
`postcode` VARCHAR(10) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
`town` VARCHAR(100) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
`city` VARCHAR(100) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
`state` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
`province` VARCHAR(100) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
`region` VARCHAR(100) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
`locale` VARCHAR(3) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
`country` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
`DIRECTION` ENUM('NULL','NORTH','SOUD','MID','EAST','WEST') NULL DEFAULT 'NULL' COLLATE 'utf8_unicode_ci',
`gpslat` DECIMAL(10,8) NULL DEFAULT NULL,
`gpslng` DECIMAL(10,8) NULL DEFAULT NULL,
`isChecked` ENUM('TRUE','FALSE') NOT NULL DEFAULT 'FALSE' COLLATE 'utf8_unicode_ci',
`imgspec` VARCHAR(100) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
PRIMARY KEY (`id`)
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
AUTO_INCREMENT=3195
;
 
PHP4U, dank voor het meedenken, echter krijg ik bij de uitvoer van je query een error.
BikerBill64, jou query werkt wel, ik zal eens kijken hoe het kan die andere niet werkt. Dank.
kenikavanbis, de data heb ik van een vriend die ik eens zal vragen waar die het weg heeft. Je zou me even een PM kunnen sturen.
 
PHP4U, dank voor het meedenken, echter krijg ik bij de uitvoer van je query een error.
Ik ging eigenlijk per ongeluk van een lege doeltabel uit.

Maar welke error kreeg je dan?
 
Hallo PHP4U,

De
Code:
SELECT wijknaam
zal niet weten van welk tabel het "wijknaam" moet selecteren, ze hebben immers beide deze kolom.

Daarnaast zal ook al zou je de code aanpassen naar
Code:
insert INTO stratentabel (wijknaam)
SELECT wijktabel.wijknaam 
FROM wijktabel, stratentabel WHERE stratentabel.postal = wijktabel.postal
dit alleen nieuwe (ongerelateerd aan de postcode) regels aan je tabel toevoegen.

Bij een lege doeltabel zal er al helemaal geen
Code:
 WHERE stratentabel.postal = wijktabel.postal
relatie gelegd kunnen worden (er is immers dan ook geen inoud "stratentabel.postal" aanwezig) en dus ook niks toegevoegd worden.
 
Laatst bewerkt:
Klopt, zie vorige post! Ik zag het even verkeerd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan