![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Veteran
![]() |
![]() Ich versuche gerade ein Forum zu konvertieren, hierzu möchte ich alle User und Beiträge ins neue Forum übertragen.
Die Userdaten habe ich einfach als .csv exportiert für die neue Tabelle umgestöpselt und wieder importiert. Bei den Beiträgen geht das nicht, es sind zu viele, auch den Import bekomm ich im Excel nicht Fehlerfrei hin. Ich möchte nun direkt in phpmyAdmin die Inhalte aus einer Tabellenspalte in eine andere Kopieren, geht das? Ja? Wie? Bitte, Danke !
____________________________________
Internet is voll, GEH WEG ! ...a friend in need's a friend indeed, a friend with weed is better... be a warrior |
![]() |
![]() |
![]() |
#2 |
Inventar
![]() |
![]() Wenn beide Tabellen in der selben Datenbank sind müsste das (glaube ich) so funktionieren:
Insert into tabelle2 (spalte1, spalte2, spalte3) (select spalte2,spalte5,spalte3 from tabelle1)
____________________________________
„Das menschliche Gehirn ist eine großartige Sache. Es funktioniert vom Moment der Geburt an – bis zu dem Zeitpunkt, wo du aufstehst, um eine Rede zu halten.“ Mark Twain "Windle shook his head sadly. Four exclamation marks, the sure sign of an insane mind" Reaper Man, Terry Pratchett |
![]() |
![]() |
![]() |
#3 |
Veteran
![]() |
![]() Ok Kopieren hab ich hinbekommen, aber hab ein neues Problem.
Ich hab so kopiert: INSERT INTO `phpbb_posts_text`(`post_id`,`bbcode_uid`,`post_su bject`,`post_text`) SELECT `forumpost_threadid`,`forumpost_bbcode`,`forumpost _title`,`forumpost_text` FROM `phpkit_forumpost` aber nun benötige ich eine Kopie, einer Spalte aus einer Tabelle die nach einer bestimmten Spalte sortiert ist, damit sich die Daten nicht vermischen... Ich hab in der Qelltabelle_1 eine Spalte "Thread_id" und "Forum_id", in der Quelltabelle_2 "Thread_id" und "Post_id" Die Quelltabellen sind wenn ich sie mir unter phpMyAdmin ansehe unterschiedlich sortiert, wenn ich die Daten aus den beiden Tabellen in eine "Zieltabelle" zusammenkopiere passen sie nicht mehr zueinander. Meine Idee war nun einfach die erste, "Quelltabelle_1", nach dem selben Kriterium wie die zweite, "Quelltabelle_2" zu sortieren nämlich "Post_id" Mit dieser Sortierung dann die Daten aus den beiden in meine Zieltabelle zu kopieren, so würden die Datensätze dann wieder passen. Leider bekomme ich das mit dem Sortieren nicht hin, ich kann sie zwar sortieren aber die Einstellung bleibt nur solange ich mir die Tabelle ansehe, verlasse ich die Ansicht ist die Sortierung weg ![]() Hilfe ![]()
____________________________________
Internet is voll, GEH WEG ! ...a friend in need's a friend indeed, a friend with weed is better... be a warrior |
![]() |
![]() |
![]() |
#4 |
Veteran
![]() |
![]() Ok, auch erledigt, aber neues Problem
![]() Ich hab nun Daten in einer Tabelle, nun möchte ich EINE Spalte der tabelle mit den inhalten einer Spalte einer anderen Tabelle befüllen, habe das wie Folgt versucht: INSERT INTO `phpbb_posts` (`forum_id`) SELECT `forumthread_catid` FROM `phpkit_forumthread` Leider werden nicht nur die Daten Kopiert sondern es werden komplette neue Einträge angelegt, das funktioniert natürlich nicht.
____________________________________
Internet is voll, GEH WEG ! ...a friend in need's a friend indeed, a friend with weed is better... be a warrior |
![]() |
![]() |
![]() |
#5 |
Veteran
![]() |
![]() UPDATE Funktion verwenden mit entsprechenden SELECT
|
![]() |
![]() |
![]() |
#6 |
Veteran
![]() |
![]() Update war ein guter Tipp, hab mich nun 3 Stunden im google gequählt aber habs hinbekommen
![]() Zur Erklärung: ( phpkit_forumcat = Quell-Tabell A) ( forumcat_postcount = Quell Spalte ( phpbb_forums = Ziel-Tabelle B) ( forum_posts = Ziel Spalte ) UPDATE `phpkit_forumcat`,`phpbb_forums` SET `phpbb_forums`.`forum_posts`=`phpkit_forumcat`.`fo rumcat_postcount` WHERE `phpbb_forums`.`forum_id`=`phpkit_forumcat`.`forum cat_id`
____________________________________
Internet is voll, GEH WEG ! ...a friend in need's a friend indeed, a friend with weed is better... be a warrior |
![]() |
![]() |
![]() |
#7 |
Veteran
![]() |
![]() okey einiges hab ich schon geschafft aber nun hab ich eine echte Aufgabe:
Die Quell-Tabelle hat folgende Spalten: post_id / thread_id / Viele Posts (post_id) sind einem Thread zugeteilt In der Zieltabelle habe ich folgende Spalten: thread_id / first_post_id / last_post_id ich muss nun für jeden Thread (thread_id) den ersten und lezten Post (post_id) definieren. Per Hand schaff ich das nicht, ~2000 Threads und 20.000 Beiträge, ich denke aber das es mit einer guten WHERE Anweisung klappen sollte, könnte mir bitte jemand helfen?
____________________________________
Internet is voll, GEH WEG ! ...a friend in need's a friend indeed, a friend with weed is better... be a warrior |
![]() |
![]() |
![]() |
#8 |
Jr. Member
![]() |
![]() Probier mal...
Code:
UPDATE Zieltabelle SET first_post_id = SELECT MIN(QuellTabelle.post_id) FROM QuellTabelle WHERE QuellTabelle.thread_id = ZielTabelle.thread_id UPDATE Zieltabelle SET last_post_id = SELECT MAX(QuellTabelle.post_id) FROM QuellTabelle WHERE QuellTabelle.thread_id = ZielTabelle.thread_id
____________________________________
lg Yoghurt -- Rettet unsere Wälder, esst mehr Biber! |
![]() |
![]() |
![]() |
#9 |
Veteran
![]() |
![]() Danke !
ich hab einen syntaxfehler drinn und find ihn nicht... Fehler SQL-Befehl: ![]() UPDATE "phpbb_topics" SET "phpbb_topics". "topic_first_post_id" = SELECT MIN( "phpkit_forumpost". "forumpost_id" ) FROM "phpkit_forumpost" WHERE "phpkit_forumpost". "forumthread_id" = "phpbb_topic". "thread_id" MySQL meldet: ![]() #1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen (diese kann für verschiedene Server-Versionen unterschiedlich sein) bei '"phpbb_topics" SET "phpbb_topics"."topic_first_post_id" = SELECT MIN'in Zeile 1 _____________________________ Habs auch so probiert: UPDATE "phpkit_forumpost","phpbb_topics" SET "phpbb_topics"."topic_first_post_id" = SELECT "phpkit_forumpost"."forumpost_id" MIN("phpkit_forumpost"."forumpost_id") FROM "phpkit_forumpost" WHERE "phpkit_forumpost"."forumthread_id"="phpbb_topic". "thread_id" Und So: UPDATE "phpkit_forumpost","phpbb_topics" SET "phpbb_topics"."topic_first_post_id" = SELECT "phpkit_forumpost"."forumpost_id", MIN("phpkit_forumpost"."forumpost_id") FROM "phpkit_forumpost" WHERE "phpkit_forumpost"."forumthread_id"="phpbb_topic". "thread_id" __________________________________
____________________________________
Internet is voll, GEH WEG ! ...a friend in need's a friend indeed, a friend with weed is better... be a warrior Geändert von incubus (19.03.2009 um 11:40 Uhr). |
![]() |
![]() |
![]() |
#10 |
Jr. Member
![]() |
![]() Falls du auf einer mySQL Datenbank arbeitest musst du glaub ich das SELECT in extra Klammern setzen. Also so...
Code:
UPDATE "phpbb_topics" SET "phpbb_topics". "topic_first_post_id" = (SELECT MIN( "phpkit_forumpost". "forumpost_id" ) FROM "phpkit_forumpost" WHERE "phpkit_forumpost". "forumthread_id" = "phpbb_topic". "thread_id")
____________________________________
lg Yoghurt -- Rettet unsere Wälder, esst mehr Biber! |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|