Created
September 10, 2013 17:04
-
-
Save hirbod/6512406 to your computer and use it in GitHub Desktop.
Redaxo Prioritäten (Kategorien / Artikel) in allen Sprachen mit CLANG 0 syncen
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Dieses Skript synced nur Kategorien. Sollen auch Artikel gesynced werden, | |
// einfach catprior durch prior ersetzen (an allen Stellen) | |
// Quellsync ist CLANG 0 (Sprache 1) | |
// Es werden ALLE anderen Sprachen gesynced. | |
// Falls nur bestimmte Sprachen gesynced werden sollen, einfach Statement anpassen | |
$query = 'SELECT * FROM rex_article WHERE clang = 0'; | |
$db_conn = rex_sql::factory(); | |
$german_articles = $db_conn->getArray($query); | |
//$db_conn->debugsql = 1; | |
foreach($german_articles as $article){ | |
$query = 'UPDATE rex_article SET catprior = '.$article['catprior'].' WHERE clang != 0 AND id = '.$article['id']; | |
$db_conn->flush(); | |
$db_conn->setQuery($query); | |
} | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Dieses Skript synced nur Kategorien mittels SQL-Statement. Sollen auch Artikel synced werden, | |
// einfach catprior durch prior ersetzen (an allen Stellen) | |
// Quellsync ist CLANG 0 (Sprache 1) | |
// Es werden ALLE anderen Sprachen gesynced. | |
// Falls nur bestimmte Sprachen gesynced werden sollen, einfach Statement anpassen | |
UPDATE rex_article t1 SET catprior = (SELECT catprior FROM rex_article t2 WHERE t2.id = t1.id AND clang = 0) WHERE clang != 0 |
Hi, der SQL-Code oben war tatsächlich ungetestet. Hast du das ausprobiert? Bist du sicher das es nicht funktioniert?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi,
ich glaub nicht, dass das SQL-Statement funktioniert. MySQL erlaubt nicht, die Tabelle, die geändert werden soll, in einer Subquery zu referenzieren.
Aber du könntest mit einer temporären Tabelle arbeiten:
CREATE TEMPORARY TABLE IF NOT EXISTS rex_article_tmp LIKE rex_article;
TRUNCATE rex_article_tmp;
INSERT INTO rex_article_tmp SELECT * FROM rex_article;
UPDATE rex_article update_art
SET update_art.catprior = (SELECT original_art.catprior FROM rex_article_tmp original_art WHERE original_art.id = update_art.id AND clang = 0)
WHERE update_art.clang != 0;