Buenas gente, llevo varios días intentando realizar cierto ejercicio donde no consigo sacarlo
Os comento, tengo 2 tablas A y B
Digamos que en la tabla B tengo id_b y tipo
Y en la tabla A, tengo id_A y id_B
Ejemplo
Tabla B
| id_b| tipo
| 1 | a
| 2 | a
| 3 | a
| 4 | a
| 5 | b
| 6 | b
Tabla A
| id_a| id_b
| 1 | 1
| 2 | 1
| 3 | 1
| 4 | 1
| 5 | 6
| 6 | 6
El objetivo seria sacar el id_b de cada tipo de la tabla A que mas se use, en este caso los maximos serian el 1 y 6
No consigo sacar el maximo, solo el numero de veces que aparece id_b en la tabla A y por tanto me saca todos, y solo quiero el mas usado
Lo siguiente seria una vez sacado el maximo(creo que deberia guardarlo en una tabla auxiliar),coger el mas usado, por ejemplo id_b 1 y comprobar si algun campo de esa fila esta vacio o nulo(de la tabla B) y puedo rellenarlo con el resto de filas del mismo tipo y a continuacion eliminar los que no son los mas usados, es decir, los id_b 2,3,4 y 6(de la tabla B)
Aqui directamente no se comparar filas de una misma tabla o diferentes(pero con mismos campos, claro), o de eliminar si , menos mal jejeje pero no se si debe ser la comparacion con una funcion y un cursor que recorrar campos y rellene o algo similar....
Gracias y un saludo.
No entiendo a que te refieres con los máximos, a los más repetidos?! Si fuera ese caso podrías hacerlo con esta sentencia :
select id_b from B -- mostramos el id_b mas repetido en la tabla B
group by id_b order by count(id_b) desc -- en orden descendente (de mayor a menor repetidos)
limit 1; -- y solo filtramos para que de un valor (el mas repetido)
Me refiero al que mas aparece de cada tipo, con esa ocnsulta me saldrian todos lo id_b
Saludos,
- Lo complementas con un INNER JOIN así:
SELECT B.tipo
FROM A
INNER JOIN B ON A.id_b = B.id_b
GROUP BY A.id_b
ORDER BY COUNT(A.id_b) DESC
LIMIT 1