WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 18.03.2009, 07:53   #1
incubus
Veteran
 
Benutzerbild von incubus
 
Registriert seit: 31.07.2006
Ort: Österreich, nähe Graz
Alter: 51
Beiträge: 253

Mein Computer

Standard Daten von einer SQL Tabelle in eine ander kopieren

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
incubus ist offline   Mit Zitat antworten
Alt 18.03.2009, 08:02   #2
zAPPEL
Inventar
 
Registriert seit: 07.11.2001
Ort: Perchtoldsdorf
Alter: 45
Beiträge: 2.085

Mein Computer

Standard

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
zAPPEL ist offline   Mit Zitat antworten
Alt 18.03.2009, 10:26   #3
incubus
Veteran
 
Benutzerbild von incubus
 
Registriert seit: 31.07.2006
Ort: Österreich, nähe Graz
Alter: 51
Beiträge: 253

Mein Computer

Standard

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
incubus ist offline   Mit Zitat antworten
Alt 18.03.2009, 12:22   #4
incubus
Veteran
 
Benutzerbild von incubus
 
Registriert seit: 31.07.2006
Ort: Österreich, nähe Graz
Alter: 51
Beiträge: 253

Mein Computer

Standard

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
incubus ist offline   Mit Zitat antworten
Alt 18.03.2009, 12:36   #5
Martin_H3G
Veteran
 
Benutzerbild von Martin_H3G
 
Registriert seit: 14.10.2005
Ort: 1050 Wien
Alter: 56
Beiträge: 353

Mein Computer

Standard

UPDATE Funktion verwenden mit entsprechenden SELECT
Martin_H3G ist offline   Mit Zitat antworten
Alt 18.03.2009, 19:00   #6
incubus
Veteran
 
Benutzerbild von incubus
 
Registriert seit: 31.07.2006
Ort: Österreich, nähe Graz
Alter: 51
Beiträge: 253

Mein Computer

Standard

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
incubus ist offline   Mit Zitat antworten
Alt 18.03.2009, 20:48   #7
incubus
Veteran
 
Benutzerbild von incubus
 
Registriert seit: 31.07.2006
Ort: Österreich, nähe Graz
Alter: 51
Beiträge: 253

Mein Computer

Standard

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
incubus ist offline   Mit Zitat antworten
Alt 18.03.2009, 23:51   #8
Yoghurt
Jr. Member
 
Benutzerbild von Yoghurt
 
Registriert seit: 28.12.2000
Alter: 48
Beiträge: 49


Yoghurt eine Nachricht über Skype™ schicken
Standard

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!
Yoghurt ist offline   Mit Zitat antworten
Alt 19.03.2009, 11:22   #9
incubus
Veteran
 
Benutzerbild von incubus
 
Registriert seit: 31.07.2006
Ort: Österreich, nähe Graz
Alter: 51
Beiträge: 253

Mein Computer

Standard

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).
incubus ist offline   Mit Zitat antworten
Alt 19.03.2009, 18:03   #10
Yoghurt
Jr. Member
 
Benutzerbild von Yoghurt
 
Registriert seit: 28.12.2000
Alter: 48
Beiträge: 49


Yoghurt eine Nachricht über Skype™ schicken
Standard

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!
Yoghurt ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:02 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag