web-dev-qa-db-fra.com

Comment puis-je traduire le code SQL en quelque chose que Joomla va prendre?

Je suis dans le même cas discuté sur https://stackoverflow.com/questions/11709043/mysql-update-column-with-value-from-another-table , c'est-à-dire que je dois copier la valeur d'une colonne de tableA à tableB en fonction d'une colonne commune dans chaque table.

J'ai utilisé le code suggéré à l'intérieur de PHPMyAdmin, et cela fonctionne parfaitement:

UPDATE TableB 
SET TableB.value = (
    SELECT TableA.value 
    FROM TableA
    WHERE TableA.name = TableB.name
);

Mon problème est que je suis incapable de traduire cela en quelque chose que je peux utiliser à l'intérieur de mon mod_xxx.php fichier. Sur la même page Stack Overflow, il existe un code suggéré qui utilise mysql_query et fonctionne, mais Joomla ne l’accepte pas. Je sais que tout code doit être traduit selon les normes de Joomla, mais j'ai passé trois jours complets à l'essayer sans succès.

J'ai essayé le code suivant sans succès:

$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query ->UPDATE ('#__gruposlocales')
       ->SET ('#__gruposlocales.name') =
             (SELECT ('#__community_groups.name')
              FROM ('#__community_groups')
              WHERE ('#__community_groups.ownerid = #__gruposlocales.id'));
$db->setQuery($query);
$result = $db->execute(); 

Comme vous pouvez le deviner, je ne connais pas bien le code PHP, je suis donc dans le besoin de votre aide, s'il vous plaît. Ma question est de savoir comment puis-je traduire le code supérieur en quelque chose que Joomla prendra ?

2
Pablo Castelo

Vous pouvez faire ce qui suit:

$db = JFactory::getDbo();
$sql = "UPDATE TableB SET TableB.value = (SELECT TableA.value FROM TableA WHERE TableA.name = TableB.name);
$db->setQuery($sql);
$db->execute();
1
itoctopus