Zum Inhalt springen

tt_news category geändert in SQL ohne Effekt

Erstellt am 25. Oktober 2011 · 8 Antworten · letzte Antwort am 11. August 2013

Tags: tt_news, Datenbank, Frage

MohnSemmel ·

Hallo Forum,

ich habe gerade versucht 100en News eine Kategorie zuzuweisen, indem ich die Kategory-ID einfach im Feld "category" über SQL gesetzt habe:

UPDATE tt_news SET category=1;

Im phpmyadmin wird auch richtig angezeigt, allerdings nicht im Backen in der Newsliste. Ich dankte mir, es liegt an der Cache, deswegen habe ich den table tt_news_cache geleert, aber auch ohne Effekt. Als hätte ich nie etwas in der Datenbank geändert haben die News in der Backen-Liste ihre Kategorie (oder eben keine)

Kann mir jemand sagen woran das noch liegen kann?

LG
Semmel

karlchen ·

die Kategorien in tt_news werden über die Tabelle "tt_news_cat_mm" zugewiesen, jeder tt_news Datensatz bekommt dort die UID der tt_news Kategorie zugeordnet.

uid_local = tt_news Datensatz uid
uid_foreign = tt_news Kategorie uid

MohnSemmel ·

Oh, danke Karlchen. Für was ist dann der Bereich "category" im tabel tt_news?

Hast du zufällig einen Vorschlag, wie ich dann für alle bestehenden News dort einen Kategorieeintrag erstellen kann mit SQL?

fiedomedia ·
MohnSemmel schrieb

Oh, danke Karlchen. Für was ist dann der Bereich "category" im tabel tt_news?

Hallo Mohnsemmel,

diese Spalte "category" sagt dir wie viele Kategorien dieser News zugeordnet sind.

Grüße Patrick

MohnSemmel ·
king.darki schrieb

diese Spalte "category" sagt dir wie viele Kategorien dieser News zugeordnet sind.

Danke!
Weisst du wie ich über SQL allen News eine Kategorie zuweisen kann. Sind zu viele um es übers Backend zu machen ...

fiedomedia ·
MohnSemmel schrieb

Weisst du wie ich über SQL allen News eine Kategorie zuweisen kann. Sind zu viele um es übers Backend zu machen ...

Das Problem ist, dass du für jede News in der Tabelle tt_news einen Eintrag in tt_news_cat_mm machen musst, wobei uid_local die ID der aktuellen News ist (also immer eine andere ID) und uid_foreign die ID der Kategorie (die immer gleich ist).

Eine Schleife für INSERTs zu basteln klappt glaub ich nicht, zumindest wäre mir nichts bekannt...
Du könntest dir höchstens einen INSERT-Befehl im Editor zusammenbasteln und dann ausführen: (ungetestet!)

INSERT INTO tt_news_cat_mm (uid_local, uid_foreign, sorting)
VALUES ("ID der 1. News", "ID der Kategorie", 1),
VALUES ("ID der 2. News", "ID der Kategorie", 1),
...
VALUES ("ID der letzten News", "ID der Kategorie", 1);

Ich hoffe nur für dich, dass es nicht zuuu viele News sind, ansonsten ist diese Methode wohl schmarrn.

Grüße Patrick

MohnSemmel ·

Hallo Patrick,

danke für deine Hilfe. Da war allerdings ein kleiner Fehler im SQL, weil man nicht vor jede Zeile VALUES schreibt. So gehts:

INSERT INTO tt_news_cat_mm (uid_local, uid_foreign, sorting)
VALUES (1, 1, 1),
(2, 1, 1),
(3, 1, 1),
...
(347, 1, 1);

Hab mir dann einfach im Excel eine Liste angelegt mit den Werten von 1-347 (soviele News waren es) und dann als CSV exportiert. War in 10 Minuten erledigt.

LG
Semmel

fiedomedia ·
MohnSemmel schrieb

danke für deine Hilfe. Da war allerdings ein kleiner Fehler im SQL, weil man nicht vor jede Zeile VALUES schreibt.

Ach ja klar, hast natürlich recht. Wie gesagt, war ungetestet, aber schön, dass ich dir helfen konnte!

Grüße Patrick

gutschik ·

Angenommen alle betroffenen News sind im Sysfolder mit der uid 65 gespeichert und die gewünsche News-Category hat die uid 8, dann kann man mit folgendem SQL alle Einträge aktualisieren:

UPDATE tt_news SET category=1  WHERE pid = 65;

INSERT INTO tt_news_cat_mm (
    uid_local,
    uid_foreign,
    sorting)
(SELECT uid, 8, 1 FROM tt_news WHERE pid = 65);