Página 1 de 1

Agregar usuarios a un grupo determinado, teniendo una consulta SQL que determina a cuáles hay que aplicarlo

Publicado: 30 Mar 2021, 22:38
por karbiko

Bueno, os explico.
Tengo un montón de usuarios pertenecientes a un grupo determinado que no me han rellenado un campo personalizado que he creado.
La consulta que me saca el listado de esos usuarios es esta:

SELECT DISTINCT U.user_id, U.username FROM phpbb_users U, phpbb_profile_fields_data F WHERE (U.user_id = F.user_id) AND (U.group_id=7) AND (F.pf_mail_rc="");

De la tabla php_users me da el número de usuario y su nombre cuando coinciden los id en las tablas phpbb_users (la renombro U)y phpbb_profile_fields_data (a la que renombro F), y además esos users pertenecen al grupo 7 en la tabla U y han dejado vacío el campo pf_mail_rc en la tabla F.

Vale, me saca un listado correctamente de los usuarios.

Ahora quiero que esos usuarios sean agregados a un grupo que los va a identificar y que será el número 26...
No tiene que ser el grupo predeterminado. Me vale con que pertenezcan también a este grupo, además del que ya tienen ahora mismo como predeterminado.

¿Para qué lo quiero? Porque con la ext Board Notices Manager voy a hacer un mensaje específico para estos usuarios, de manera que cuando se identifiquen, si pertenecen a ese grupo 26 les aparecerá un recordatorio para que rellenen ese campo. Para eso es este lío que estoy montando.... :wink:

He estado buscando la tabla en la que esté el campo que guarda los grupos a los que pertenece un usuario, pero no he dado con ella.

Me imagino que habrá que hacer una consulta UPDATE tabla ,... pero me pierdo. ¿O es in INSERT INTO ....? :shock:

Bueno a ver si me podéis ayudar y me evitáis tener que modificar manualmente esos casi 200 usuarios...

Y así aprendo un poco más :P


Re: Agregar usuarios a un grupo determinado, teniendo una consulta SQL que determina a cuáles hay que aplicarlo

Publicado: 02 Abr 2021, 19:45
por AlfredoRamos
karbiko escribió: 30 Mar 2021, 22:38

He estado buscando la tabla en la que esté el campo que guarda los grupos a los que pertenece un usuario, pero no he dado con ella.

Los grupos a los que pertenece un usuario (a excepción del predeterminado) están almacenados en la tabla phpbb_user_group.

karbiko escribió: 30 Mar 2021, 22:38

Me imagino que habrá que hacer una consulta UPDATE tabla ,... pero me pierdo. ¿O es in INSERT INTO ....? :shock:

Podrías intentar con la siguiente consulta, aunque ojo, no la he probado ya que no tengo datos en mis tablas similares a los tuyos.

Creo que no es necesario recordar lo importante que es hacer copias de seguridad y preferentemente probarlo en local antes de hacer nada.

Código: Seleccionar todo

INSERT INTO phpbb_user_group (user_id, group_id, user_pending, group_leader)
SELECT DISTINCT U.user_id, 26 AS group_id, 0 AS user_pending, 0 AS group_leader
FROM phpbb_users U, phpbb_profile_fields_data F
WHERE U.user_id = F.user_id
	AND U.group_id = 7
	AND F.pf_mail_rc = "";

La sentencia es tal cual se muestra, el INSERT y el SELECT en la misma consulta.

Lo que hace es (o en teoría debería de hacer) insertar el grupo adicional con ID 26 a los usuarios que devuelva la consulta SELECT, con las condiciones que requieres.