Duda SQL con tablas relacionadas y selects anidados para saber el registro

vuelvo a tener problemas con una consulta sql Tengo una tabla Fabricante(cod_fabricante, nombre,pais) y otra Juguetes(cod_juguete,...

La FAQ Duda SQL con tablas relacionadas y selects anidados para saber el registro tiene

Pertenece a la categoría:

Pregunta
vuelvo a tener problemas con una consulta sql


Tengo una tabla Fabricante(cod_fabricante, nombre,pais)
y otra Juguetes(cod_juguete, cod_fabricante, descripción, precio, edad, stock)


Me piden al nombre del fabricante del cual existe la mayor cantidad de juguetes en una juguetería, pero no logro hacer la consulta sin el empleo de tablas auxiliares, y no me dejan utilizar éstas.


¿Alguien podría ayudarme? muchas gracias!


Respuesta de Alexander Vega
Hola, sería asi:



NOTA: coloque el AS por si lo haces en Access en otros gestores de
Base de Datos no hace falta colocarlo para crear el alias.
Importante: es necesario el IN que esta en el SELECT principal porque
puede haber mas de un fabricante con la misma cantidad de juguetes (y
que esta sea la cantidad maxima que existe)...



SELECT *
FROM FABRICANTE AS A
WHERE a.cod_fabricante in (SELECT
COD_FABRICANTE
FROM
(SELECT B.COD_FABRICANTE, COUNT(*) AS CANTIDAD
FROM FABRICANTE B, JUGUETES C
WHERE B.COD_FABRICANTE = C.COD_FABRICANTE
GROUP BY B.COD_FABRICANTE
HAVING COUNT(*) = (SELECT MAX(CANTIDAD) FROM (SELECT COUNT(*) AS CANTIDAD
FROM FABRICANTE
E, JUGUETES F
WHERE
E.COD_FABRICANTE = F.COD_FABRICANTE
GROUP BY E.COD_FABRICANTE))))



Saludos que sea de gran ayuda,

Complementar la respuestaComplementar la respuesta
Volver al árbol de categoríasVolver al árbol de categorías

Comentarios
Fueron enviados 4 comentarios a la faq
3 comentarios no revisados
1 comentario revisado:
Por: David Segoviano
16/1/08
Hola, yo opino que hay una solucion un poco menos compleja.

SELECT F.cod_fabricante, F.nombre, SUM(J.stock) AS cant_jug FROM Fabricante AS F INNER JOIN Juguetes AS J ON F.cod_fabricante=J.cod_fabricante GROUP BY F.cod_fabricante ORDER BY cant_jug DESC LIMIT 0,1

Claro hay que revisar que tabla tiene menos registros para acomodar el JOIN para que sea optimo.

Aqui lo exlico:
-> seleccionas los campos que te interese conocer.
-> se hace la interseccion de las tablas
-> se hace una agrupacion de registros en el campo llave principal. (esto le da sentido al sum de stock o a un count de registros) para sacar el total de juguetes de cada fabricante
-> ordenamos por el contador en orden desendente
-> y limitamos los resultados a 1 desde el registro 0

Espero te sirva.
Exito.

Volver al árbol de categoríasVolver al árbol de categorías
Alojados en el grupo