Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: statham en 15 Abril 2019, 19:46 pm



Título: Máximo y comparar tablas +mysql
Publicado por: statham en 15 Abril 2019, 19:46 pm
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.


Título: Re: Máximo y comparar tablas +mysql
Publicado por: srWhiteSkull en 16 Abril 2019, 16:51 pm
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
  1. SELECT id_b FROM B -- mostramos el id_b mas repetido en la tabla B
  2.  
  3. GROUP BY id_b ORDER BY COUNT(id_b) DESC -- en orden descendente (de mayor a menor repetidos)
  4. LIMIT 1; -- y solo filtramos para que de un valor (el mas repetido)



Título: Re: Máximo y comparar tablas +mysql
Publicado por: statham en 16 Abril 2019, 19:50 pm
Me refiero al que mas aparece de cada tipo, con esa ocnsulta me saldrian todos lo id_b


Título: Re: Máximo y comparar tablas +mysql
Publicado por: EdePC en 16 Abril 2019, 20:59 pm
Saludos,

- Lo complementas con un INNER JOIN así:

Código
  1. SELECT B.tipo
  2. FROM A
  3. INNER JOIN B ON A.id_b = B.id_b
  4. GROUP BY A.id_b
  5. ORDER BY COUNT(A.id_b) DESC
  6. LIMIT 1