Toon posts:

[MySQL] Mergen van 2 tables

Pagina: 1
Acties:
  • 56 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb 2 sites, het was eigenlijk de bedoeling om de nieuwe site nog niet te beginnen, maar een paar zijn al begonnen met uploaden. Nu heb ik dus een table waar al die uploads in staan, elke upload heeft een unieke ID. Beide tables zijn nu verschillend en op de ene site staat nu bijv. Engels met ID 500 en op de andere site Frans met ID 500. Hoe kan ik ervoor zorgen dat die 2 tables gemerged worden zonder dat er dubbele ID's onstaan?

oja het zijn MySQL tables op 2 verschillende servers

[ Voor 8% gewijzigd door Verwijderd op 21-02-2004 15:02 ]


  • lost95
  • Registratie: Januari 2000
  • Laatst online: 22-08 21:39
Zijn er andere tabellen gelinkt aan die ID? Anders kan je toch een voor een in een nieuwe table laden en dan mysql zelf weer een nieuwe ID laten aanmaken?

Vooral sinaasappels zijn bang voor persvrijheid.


Verwijderd

Topicstarter
lost95 schreef op 21 februari 2004 @ 15:05:
Zijn er andere tabellen gelinkt aan die ID? Anders kan je toch een voor een in een nieuwe table laden en dan mysql zelf weer een nieuwe ID laten aanmaken?
Je bedoelt een script schrijven die nieuwe "INSERT" regels maakt?
Maar dan zit ik dus nog wel met de ID's die hetzelfde zijn. Die komen er dan dubbel in te staan...

(voorbeeld:

tabel 1 heeft deze waardes:
ID 1 - Aap
ID 2 - Papegaai
ID 3 - Struisvogel
ID 4 - Varken

tabel 2 heeft deze waardes:
ID 1 - Aap
ID 2 - Papegaai
ID 3 - Paard
ID 4 - Koe

)

[ Voor 21% gewijzigd door Verwijderd op 21-02-2004 15:10 ]


  • lost95
  • Registratie: Januari 2000
  • Laatst online: 22-08 21:39
Verwijderd schreef op 21 februari 2004 @ 15:09:
[...]


Je bedoelt een script schrijven die nieuwe "INSERT" regels maakt?
Maar dan zit ik dus nog wel met de ID's die hetzelfde zijn. Die komen er dan dubbel in te staan...
Idd gewoon inserten, alleen de id NIET meegeven in die insert. Als je dat veld op autoincrement zet dan geeft mysql er zelf een nieuw ID aan (en verhoogt die dus steeds).

Vooral sinaasappels zijn bang voor persvrijheid.


Verwijderd

Daarna zou je nog een script kunnen schrijven die de nieuwe ID's ophaald en in de andere tabellen aanpast, mits deze dus gekoppeld zijn aan deze ID's.

Verwijderd

Topicstarter
lost95 schreef op 21 februari 2004 @ 15:11:
[...]


Idd gewoon inserten, alleen de id NIET meegeven in die insert. Als je dat veld op autoincrement zet dan geeft mysql er zelf een nieuw ID aan (en verhoogt die dus steeds).
Ja ok dat snap ik

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php 

require "inc/mysql.inc.php"; 

$query = mysql_query("SELECT * FROM school"); 
// velden ID, type, gemaaktdoor, vak, klas, naam, datumtijd, periode, bestandsnaam, votes, totalscore, ip 

while ($data = mysql_fetch_object($query)) { 

  echo "INSERT INTO school VALUES (\"\", \"$data->type\", \"$data->gemaaktdoor\", \"$data->vak\", \"$data->klas\", \"$data->klas\", \"$data->naam\", \"$data->datumtijd\", \"$data->periode\", \"$data->bestandsnaam\", \"$data->votes\", \"$data->totalscore\", \"$data->ip\");\n"; 

} 

?> 


En dan de output naar de andere table, maar dan zit ik nog steeds met die waardes die WEL gelijk zijn, en niet toegevoegd moeten worden.

[ Voor 31% gewijzigd door Verwijderd op 21-02-2004 15:29 ]


  • lost95
  • Registratie: Januari 2000
  • Laatst online: 22-08 21:39
Verwijderd schreef op 21 februari 2004 @ 15:16:

En dan de output naar de andere table, maar dan zit ik nog steeds met die waardes die WEL gelijk zijn, en niet toegevoegd moeten worden.
Die velden kan je dan aangeven als "unique". Alleen krijg je dan een error in je query als er al een zelfde waarde staat. Ik weet niet of je scipt dan doorloopt (en die waarde overslaat) of dat het script dan zegt " bekijk het maar).

Misschien nog een optie (kan ook zijn dat het pure onzin is, ben niet zo goed in php enzo ;)). Kopieer je tabellen naar dezelfde server. Selecteer uit tabel 1 de waarden die dubbel voor komen en zet die in een array. Selecteer nu de data uit tabel twee, kijk of de data in je array zit, als dat niet zo is insert het in tabel 1.

[ Voor 27% gewijzigd door lost95 op 21-02-2004 15:28 ]

Vooral sinaasappels zijn bang voor persvrijheid.


Verwijderd

Topicstarter
lost95 schreef op 21 februari 2004 @ 15:23:
[...]


Die velden kan je dan aangeven als "unique". Alleen krijg je dan een error in je query als er al een zelfde waarde staat. Ik weet niet of je scipt dan doorloopt (en die waarde overslaat) of dat het script dan zegt " bekijk het maar).
zolang er geen "or die(mysql_error())" bij staat loopt ie door neem ik aan :)

Het probleem is alleen dat je een TEXT niet UNIQUE kan maken :(

  • lost95
  • Registratie: Januari 2000
  • Laatst online: 22-08 21:39
Verwijderd schreef op 21 februari 2004 @ 15:26:
[...]


zolang er geen "or die(mysql_error())" bij staat loopt ie door neem ik aan :)

Het probleem is alleen dat je een TEXT niet UNIQUE kan maken :(
velden ID, type, gemaaktdoor, vak, klas, naam, datumtijd, periode, bestandsnaam, votes, totalscore, ip
Welke is dan text? Kan je daar geen varchar(255) van maken?

Zie ook mijn edit ;)

[ Voor 5% gewijzigd door lost95 op 21-02-2004 15:32 ]

Vooral sinaasappels zijn bang voor persvrijheid.


  • assass
  • Registratie: November 2002
  • Laatst online: 31-07-2024

assass

Salon GoT'er

kan alleen via een php script 2 mysql tables gefuseerd worden?

zou dat niet lukken via een mysql opdracht oid?

  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 23-08 11:49

edeboeck

mie noow noooothing ...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php 

require "inc/mysql.inc.php"; 

$query = mysql_query("SELECT * FROM school"); 
// velden ID, type, gemaaktdoor, vak, klas, naam, datumtijd, periode, bestandsnaam, votes, totalscore, ip 

while ($data = mysql_fetch_object($query)) { 

  echo "INSERT INTO school VALUES (\"\", \"$data->type\", \"$data->gemaaktdoor\", \"$data->vak\", \"$data->klas\", \"$data->klas\", \"$data->naam\", \"$data->datumtijd\", \"$data->periode\", \"$data->bestandsnaam\", \"$data->votes\", \"$data->totalscore\", \"$data->ip\");\n"; 

} 

?> 


En dan de output naar de andere table, maar dan zit ik nog steeds met die waardes die WEL gelijk zijn, en niet toegevoegd moeten worden.
ben geen mySQL-kenner, maar heb mss een tip:
1) laat de lege waarde voor het veld ID weg zodat de auto-increment zijn werk kan doen (dit is ANSI-based, weet niet of dat in mySQL ook geldt).
dus:
code:
1
echo "INSERT INTO school(type, gemaaktdoor, vak, klas, naam, datumtijd, periode, bestandsnaam, votes, totalscore, ip) VALUES (\"$data->type\", \"$data->gemaaktdoor\", \"$data->vak\", \"$data->klas\", \"$data->klas\", \"$data->naam\", \"$data->datumtijd\", \"$data->periode\", \"$data->bestandsnaam\", \"$data->votes\", \"$data->totalscore\", \"$data->ip\");\n";


2) mss kan je SQL-statement als volgt herschrijven:
(met tabellen "tblBron" en "tblDoel" en veronderstel dat het veld "fldSleutelVeld" het "eigenlijke" unieke veld is waar het hem om te doen is - dus geen auto-increment)

code:
1
2
3
SELECT  *
FROM     tblBron
WHERE  fldSleutelVeld NOT IN (SELECT fldSleutelVeld FROM tblDoel);


Dit SQL-statement geeft je dan alle records waar de bepalende waarde (in je eerste voorbeeld: "paard", "koe") die niet in je doeltabel voorkomen.

hoop dat je er wat mee bent ...

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

assass schreef op zaterdag 09 april 2005 @ 16:45:
kan alleen via een php script 2 mysql tables gefuseerd worden?

zou dat niet lukken via een mysql opdracht oid?
Kun je dat zelf niet uitzoeken? Ik vind het ietswat raar dat je voor deze vraag een dergelijk oud topic schopt; laat dat in het vervolg achterwegen ajb :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate

Pagina: 1

Dit topic is gesloten.