Máximo y comparar tablas +mysql

Iniciado por statham, 15 Abril 2019, 19:46 PM

0 Miembros y 1 Visitante están viendo este tema.

statham

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.

srWhiteSkull

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 :

Código (sql) [Seleccionar]
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)



statham

Me refiero al que mas aparece de cada tipo, con esa ocnsulta me saldrian todos lo id_b

EdePC

Saludos,

- Lo complementas con un INNER JOIN así:

Código (sql) [Seleccionar]
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