Sí, puedes trabajar con diferentes IDs en tu consulta, pero debes asegurarte de que el código sea capaz de manejar esos diferentes alias correctamente. Aquí hay algunas estrategias que puedes emplear para trabajar con IDs diferentes en tus consultas:
### Estrategia 1: Utilizar un Campo Común para el Alias
Puedes mantener diferentes nombres de ID para cada tabla en tu consulta, pero necesitarás manejar esos IDs en consecuencia al leer los resultados.
Por ejemplo:
PHP:
$chopos = mysqli_query($conexion, "
SELECT id AS idpost1, descripts AS content
FROM posters
WHERE descripts REGEXP '#[[:alnum:]]+'
AND STR_TO_DATE(hora, '%d-%m-%Y %H:%i:%s')
BETWEEN STR_TO_DATE('$startDateFormatted', '%d-%m-%Y %H:%i:%s')
AND STR_TO_DATE('$endDateFormatted', '%d-%m-%Y %H:%i:%s')
UNION ALL
SELECT id AS idpost2, mensaje AS content
FROM resposters
WHERE mensaje REGEXP '#[[:alnum:]]+'
AND STR_TO_DATE(hora, '%d-%m-%Y %H:%i:%s')
BETWEEN STR_TO_DATE('$startDateFormatted', '%d-%m-%Y %H:%i:%s')
AND STR_TO_DATE('$endDateFormatted', '%d-%m-%Y %H:%i:%s')
UNION ALL
SELECT id AS idpost3, mensaje AS content
FROM resposters2
WHERE mensaje REGEXP '#[[:alnum:]]+'
AND STR_TO_DATE(hora, '%d-%m-%Y %H:%i:%s')
BETWEEN STR_TO_DATE('$startDateFormatted', '%d-%m-%Y %H:%i:%s')
AND STR_TO_DATE('$endDateFormatted', '%d-%m-%Y %H:%i:%s')
ORDER BY idpost1 DESC, idpost2 DESC, idpost3 DESC");
### Manejo de los Resultados
Luego, en tu bucle
while, puedes utilizar condicionales para manejar diferentes columnas de ID:
PHP:
while ($loupas = mysqli_fetch_assoc($chopos)) {
if (isset($loupas['idpost1'])) {
// consulta para posters
$chols = mysqli_query($conexion, "SELECT * FROM likeposter WHERE idlike='" . $loupas['idpost1'] . "'");
} elseif (isset($loupas['idpost2'])) {
// consulta para resposters
$chols = mysqli_query($conexion, "SELECT * FROM likeposter WHERE idlike='" . $loupas['idpost2'] . "'");
} elseif (isset($loupas['idpost3'])) {
// consulta para resposters2
$chols = mysqli_query($conexion, "SELECT * FROM likeposter WHERE idlike='" . $loupas['idpost3'] . "'");
}
// Validar que la consulta fue exitosa
if ($chols) {
$like_count = mysqli_num_rows($chols);
// Aquí puedes continuar con la lógica que necesites para los likes
} else {
echo "Error en la consulta de likes: " . mysqli_error($conexion);
}
}
### Estrategia 2: Usar un JOIN
Otra opción es usar
JOIN para combinar los resultados, si es posible, en lugar de usar
UNION. Esto mantiene la relación entre los datos y facilita la consulta de los likes.
### Resumen
1.
Si decides usar alias diferentes, asegúrate de manejar la lectura de esos IDs en tu código posterior.
2.
Condicionalmente consulta según el ID que existe en los resultados.
3.
Evalúa el uso de JOIN si eres capaz de relacionar las tablas y evitar la complejidad del manejo de múltiples IDs.
Con estos métodos, deberías poder trabajar con diferentes IDs sin problemas. Si necesitas más detalles o ejemplos, ¡hazmelo saber!
$chopos = mysqli_query($conexion,"
SELECT id AS idpro, descripts AS content
FROM posters
WHERE descripts REGEXP '#[[:alnum:]]+' AND STR_TO_DATE(hora, '%d-%m-%Y %H:%i:%s') BETWEEN STR_TO_DATE('$startDateFormatted', '%d-%m-%Y %H:%i:%s') AND STR_TO_DATE('$endDateFormatted', '%d-%m-%Y %H:%i:%s')
UNION ALL
SELECT id AS idpro, mensaje AS content
FROM resposters
WHERE mensaje REGEXP '#[[:alnum:]]+' AND STR_TO_DATE(hora, '%d-%m-%Y %H:%i:%s') BETWEEN STR_TO_DATE('$startDateFormatted', '%d-%m-%Y %H:%i:%s') AND STR_TO_DATE('$endDateFormatted', '%d-%m-%Y %H:%i:%s')
UNION ALL
SELECT id AS idpro, mensaje AS content
FROM resposters2
WHERE mensaje REGEXP '#[[:alnum:]]+' AND STR_TO_DATE(hora, '%d-%m-%Y %H:%i:%s') BETWEEN STR_TO_DATE('$startDateFormatted', '%d-%m-%Y %H:%i:%s') AND STR_TO_DATE('$endDateFormatted', '%d-%m-%Y %H:%i:%s')
ORDER BY id DESC");
$hashtag_count = 0;
$unique_hashtags = array();
$hashtag_occurrences = array(); // Array para contar las ocurrencias
$likes_occurrences = array(); // Array para contar los likes
$comments_occurrences = array(); // Array para contar los comentarios
$shares_occurrences = array(); // Array para contar las veces compartido
$total_occurrences = array(); // Array para contar la suma total de hashtags, likes, comentarios y compartidos
while ($loupas = mysqli_fetch_assoc($chopos)) {
$string = $loupas['content'];
$proid = $loupas['idpro'];
preg_match_all("/(#\w+)/", $string, $matches);
$hashtags = array_unique($matches[0]);
foreach ($hashtags as $hashtag) {
// Contamos hashtags únicos
if (!in_array($hashtag, $unique_hashtags)) {
$unique_hashtags[] = $hashtag; // Agregar a hashtags únicos
}
// Sumar ocurrencias
if (isset($hashtag_occurrences[$hashtag])) {
$hashtag_occurrences[$hashtag]++;
} else {
$hashtag_occurrences[$hashtag] = 1; // Inicializar el conteo
}
// Contar likes asociados a cada hashtag
$chols = mysqli_query($conexion, "SELECT * FROM likeposter WHERE idlike='" . $proid . "' ORDER BY id DESC");
$lomy = mysqli_num_rows($chols); // Número de likes
// Contar comentarios
$motuep = mysqli_query($conexion,"SELECT * FROM resposters WHERE idresp='" . $proid . "'");
$motuepy = mysqli_query($conexion,"SELECT * FROM resposters2 WHERE idpost='" . $proid . "'");
$comments_count = mysqli_num_rows($motuep) + mysqli_num_rows($motuepy); // Total comentarios
// Contar compartido
$clube = mysqli_query($conexion,"SELECT * FROM posters WHERE idshare='" . $proid . "' ORDER BY id ASC");
$shares_count = mysqli_num_rows($clube); // Total compartidos
// Sumar likes a las ocurrencias correspondientes
if (isset($likes_occurrences[$hashtag])) {
$likes_occurrences[$hashtag] += $lomy; // Aumentar los likes
} else {
$likes_occurrences[$hashtag] = $lomy; // Inicializar los likes
}
// Sumar comentarios a las ocurrencias correspondientes
if (isset($comments_occurrences[$hashtag])) {
$comments_occurrences[$hashtag] += $comments_count; // Aumentar los comentarios
} else {
$comments_occurrences[$hashtag] = $comments_count; // Inicializar los comentarios
}
// Sumar compartidos a las ocurrencias correspondientes
if (isset($shares_occurrences[$hashtag])) {
$shares_occurrences[$hashtag] += $shares_count; // Aumentar los compartidos
} else {
$shares_occurrences[$hashtag] = $shares_count; // Inicializar los compartidos
}
// Sumar al total
$total_occurrences[$hashtag] = ($hashtag_occurrences[$hashtag] + $likes_occurrences[$hashtag] + $comments_occurrences[$hashtag] + $shares_occurrences[$hashtag]);
$hashtag_count++; // Contar el número total de hashtags encontrados
}
}
que error tengo?