Uutiset:

Want to get involved in developing SMF, then why not lend a hand on our github!

Main Menu
Advertisement:

SQL-Abfrage benötigt!

Aloittaja McFly, elokuu 23, 2007, 11:18:42 AP

« edellinen - seuraava »

McFly

Moin Leutz!

Habe mich daran versucht, zwei Foren (eines YaBB, das andere phpkit) nach SMF zu konvertieren. Das hat auch wunderbar funktioniert, bis auf die Tatsache, dass die Topics aus dem phpkit nun in einem einzigen Forum liegen. Das ist aber auch nicht tragisch, ist halt nur 'ne Menge Arbeit sie wieder an ihre ursprüngliche Position zu verschieben.

Das eigentliche Problem liegt darin, dass nach dem Zusammenfügen der beiden Foren die User-IDs in den Beiträgen des alten phpkit-Forums nicht korrekt durch das mergeScript ersetzt wurden.

Ich bräuchte also eine SQL-Abfrage, die ab einer bestimmten ID_MSG nach ID_MEMBER "X" sucht und sie bis zum Ende durch ID_MEMBER "Y" ersetzt.
Das Gleiche nochmal für die Topics (ID_MEMBER_STARTED und ID_MEMBER_UPDATED).

Jemand 'ne Idee?

Mc Fly

ThorstenE

meinst du sowas wie
UPDATE tabelle set ID_MEMBER = 1 where ID_MEMBER = 101 AND ID_MSG > 10000

McFly

Besten Dank,

das wird mir schon mal weiter helfen!  :)

Mc Fly

McFly

#3
Und wie das geholfen hat!  :D

Die Sache mit den Topics gestaltet sich allerdings etwas komplizierter!  :-\ Da nach dem Zusammenfügen der zwei Foren sich einige ID_MEMBERs überschneiden.

Ich müsste, ausgehend von der ID_FIRST_MSG in smf_topics, in den smf_messages die ID_MEMBER heraussuchen und dann als ID_MEMBER_STARTED in smf_topics ersetzen. Soweit meine Logik?!

Ähnlich müsste auch mit ID_MEMBER_UPDATED verfahren werden.

Geht das als SQL-Abfrage zu bewältigen?

Mc Fly

Oder gibt es für SMF einen Mod oder Funktion, die so etwas erledigen kann?

mediman

Lainaus käyttäjältä: Mc Fly - elokuu 26, 2007, 08:24:07 AP
Und wie das geholfen hat!  :D

Die Sache mit den Topics gestaltet sich allerdings etwas komplizierter!  :-\ Da nach dem Zusammenfügen der zwei Foren sich einige ID_MEMBERs überschneiden.

Ich müsste, ausgehend von der ID_FIRST_MSG in smf_topics, in den smf_messages die ID_MEMBER heraussuchen und dann als ID_MEMBER_STARTED in smf_topics ersetzen. Soweit meine Logik?!

Ähnlich müsste auch mit ID_MEMBER_UPDATED verfahren werden.

Geht das als SQL-Abfrage zu bewältigen?

Mc Fly

Oder gibt es für SMF einen Mod oder Funktion, die so etwas erledigen kann?

Fürs nächste Mal: wenn man zwei Foren joint, arbeitet man günstiger mit Offsets.
D.h. wenn das eine Forum als höchste MemberID die 500 hat, und das andere als höchste MemberID 2000, dann sollte man beim ersten Forum die ID´s um 2000 erhöhen (also von 2001 bis 2501).

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

McFly

Das Script war "mergeSMF.php" von resourcez.biz. Wie das genau seine Arbeit verrichtet hat: keine Ahnung. Es war auf jeden Fall so intelligent, dass es Mitglieder, die in beiden Foren vorhanden waren, nicht doppelt übernommen wurden. Dafür fehlten einige, die ich per Hand nachträglich einfügen musste.

Mc Fly

ThorstenE

bin nicht sicher, ob ich deine Logik oben richtig interpretiert hab..

update smf_topics,smf_messages SET smf_topics.ID_MEMBER_STARTED = smf_messages.ID_MEMBER where smf_topics.ID_TOPIC = smf_messages.ID_TOPIC
update smf_topics,smf_messages SET smf_topics.ID_MEMBER_UPDATED = smf_messages.ID_MEMBER where smf_topics.ID_TOPIC = smf_messages.ID_TOPIC
PS: bitte vorher testen, nicht einfach auf nem "produktiven" Board ausführen...

mediman

Lainaus käyttäjältä: Mc Fly - elokuu 27, 2007, 04:30:40 AP
Das Script war "mergeSMF.php" von resourcez.biz. Wie das genau seine Arbeit verrichtet hat: keine Ahnung. Es war auf jeden Fall so intelligent, dass es Mitglieder, die in beiden Foren vorhanden waren, nicht doppelt übernommen wurden. Dafür fehlten einige, die ich per Hand nachträglich einfügen musste.

Mc Fly

ich vermute mal, das dieses Skript sehr wohl mit Offsets arbeitet, dafür spricht, dass es keine doppelten User gab.
Das welche fehlen liegt bestimmt darin begründet, dass der notwendige Offset falsch ermittelt wurde.

Beispiel, ein Board hat 499 User, jetzt sagt das Script Offset 500 is okay.
Was aber wenn du während der Zeit als das Board existierte 30 User gelöscht hast?
Dann ist die höchste memberID 529, d.h. der Offset von 500 ist zu klein und die fehlen 30 User.

Naja, so oder so ähnlich!

medi
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

McFly

@ ThorstenE

War schon nicht schlecht. Ich meinte aber:

UPDATE `smf_topics`, `smf_messages`
SET `smf_topics`.`ID_MEMBER_STARTED`=`smf_messages`.`ID_MEMBER`
WHERE `smf_topics`.`ID_FIRST_MSG`=`smf_messages`.`ID_MSG`


bzw. :
UPDATE `smf_topics`, `smf_messages`
SET `smf_topics`.`ID_MEMBER_UPDATED`=`smf_messages`.`ID_MEMBER`
WHERE `smf_topics`.`ID_LAST_MSG`=`smf_messages`.`ID_MSG`


Welches denn auch die Abfragen waren, die den Erfolg brachten.  8)

Was mir jetzt noch auf dem Herzen liegt ist die Aktualisierung der Beiträge pro Mitglied. Habe da mal folgendes versucht:
SELECT `smf_messages`.`ID_MEMBER`
FROM smf_messages
WHERE `smf_messages`.`ID_MEMBER` = '69'

Was mir dann die Erkenntnis brachte, dass ID_MEMBER "69" 1751 Beiträge gepostet hat. Wie bekomme ich jetzt diese Zahl in 'smf_members'.'posts'?

Mc Fly

ThorstenE

ima admin-interface gibts unter wartung den Punkt "Statistiken und Forumswerte neu Berechnen" .. ich bin nicht sicher, aber der müsste das wieder gerade rücken.

McFly

Die Funktion "Statistiken und Forumswerte neu berechnen" habe ich auch schon probiert, hat aber nix genützt.

Ist auch kein Problem, meine oben beschriebene Weise bei allen Mitgliedern durchzuführen und die Anzahl der Posts per Hand einzutragen. Falls es mit 'ner Abfrage aber automatisch möglich ist, spart es mir 'ne Menge Arbeit.

Mc Fly


McFly

Nach zwei kleineren Änderungen konnte ich es auch für die 1.1.3 installieren. Hat funktioniert!!!  :D :D :D

Besten Dank nochmal an alle Poster und melde: "gelöst".  8) ...vorerst... O:)

Mc Fly

Kuddel

Ich muss das Thema nochmal nach oben holen.

Ich muss zum Monatsende zwei Foren (1.1.5.) zusammenführen, weil ich eine Domain stilllegen will.
Ich bräuchte hierfür eine step-by-step-Anleitung, weil ich hierbei überhaupt nicht durchblicke.

Könnte mir da wer bei behilflich sein?

Ich habe sowas noch nicht gemacht und trau mich da allein einfach nicht ran ...

Beste Grüße aus Hamburg
Kuddel
Meine Meinung ist Open Source!
Jeder kann sie sich zu eigen machen!

ThorstenE

Lainaus käyttäjältä: Kuddel - heinäkuu 16, 2008, 04:17:25 AP
Ich muss zum Monatsende zwei Foren (1.1.5.) zusammenführen, weil ich eine Domain stilllegen will.
willst du aus zwei Foren eines machen oder willst du nur das eine Forum umziehen auf die noch vorhandene Domain und separat in einem Unterordner betreiben? grundsätzlich geht beides, wobei das erste mit deutlich mehr Aufwand verbunden ist..

Kuddel

Moin Torsten,

ich will aus zwei Foren eins machen.
Das eine läuft "standallone" mit 'nem TinyPortal und soll (ohne das Portal) in mein Forum integriert werden, was wiederum mit PragmaMX verbunden ist, also nur die Inhalte und die User ...

Gruß aus HH
Kuddel
Meine Meinung ist Open Source!
Jeder kann sie sich zu eigen machen!

ThorstenE

ok, grundsätzlich kann ich mir das ansehen, müsste dazu aber vorab ein paar Infos haben:
- gibt es "doppelte" User? also User die in beiden Foren existieren und wo hinterher einer raus werden soll? haben diese gleiche Nicknamen und gleiche Mailadressen oder unterscheiden sie sich?

Kuddel

ööhmm, sowohl als auch ...

aber das ist nicht die Masse, wir reden da von vielleicht 5 - 10 Usern maximal, die in beiden Foren aktiv waren oder sind
Meine Meinung ist Open Source!
Jeder kann sie sich zu eigen machen!

Advertisement: