Imprimir página | Cerrar ventana

Doble Relación con Inner Join - Count

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85730
Fecha de impresión: 16/Abril/2024 a las 21:00


Tema: Doble Relación con Inner Join - Count
Publicado por: shenares
Asunto: Doble Relación con Inner Join - Count
Fecha de publicación: 10/Enero/2021 a las 13:28
Hola a todos,

En primer lugar gracias por la ayuda.

Mi problema es el siguiente:
- Tengo tres tablas relacionadas:
Devices (...,Model,...)
ExecutionDevice (IdExecutionDevice,...,Device,...)
ExecutionTestCase (IdExecutionDevice,...)
- La relación es la siguiente:
Devices(Model) <-> ExecutionDevice(Device)
ExecutionDevice (IdExecutionDevice) <-> ExecutionTestCase(IdExecutionTestCase)

- La busqueda que estoy intentando hacer es mostrarme la cantidad de filas que hay en ExecutionTestCase relacionado a un valor de IdExecutionTestCase.

He intentado de mil formas pero no soy posible de realizarlo.

SELECT * FROM ExecutionTestCase INNER JOIN ExecutionDevice ON ExecutionTestCase.IdExecutionDevice = ExecutionDevice.IdExecutionDevice INNER JOIN Devices ON Devices.Model = ExecutionDevice.Device Where IdExecutionTestCase = "3"

¿Podríais ayudarme?

Un saludo,



Respuestas:
Publicado por: Mihura
Fecha de publicación: 12/Enero/2021 a las 10:06
No queda muy claro lo que quieres ... Confused, pero según lo he entendido tendrás que hacer las relaciones al revés, partiendo de una consulta de totales:

SELECT ....
FROM (SELECT Count(*), IdExecutionTestCase ... FROM ExecutionTestCase  GROUP BY IdExecutionTestCase) AS T1
LEFT JOIN 
ExecutionDevice ON T1.IdExecutionTestCase = ExecutionDevice.xxx
LEFT JOIN 
Devices  ON ExecutionDevice .xxx = Devices  .xxxx

Lo que te pongo es la idea genérica, tendrás que ajustarla a tus tablas / campos.





-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: shenares
Fecha de publicación: 21/Enero/2021 a las 10:53
Hola Mihura,

Perdón por la tardanza en contestar.

Lo que necesito es realizar una consulta con una relación doble de 3 tablas. Esto es lo siguiente:
Devices(Model) <-> ExecutionDevice(Device). ExecutionDevice esta relacionado con Execution con los parametros Model y Device.
ExecutionDevice (IdExecutionDevice) <-> ExecutionTestCase(IdExecutionTestCase). ExecutionTestCase esta relacionada con ExecutionDevice con los parametros IdExecutionDevice y IdExecutionTestCase.

Con esto, me gustaría saber cuantos IdExecutionTestCase teniendo en cuenta un valor X de esa tabla.

No me queda muy claro la sentencia que me has puesto...

¿Alguna idea?

Un saludo y muchísimas gracias.


Publicado por: Mihura
Fecha de publicación: 21/Enero/2021 a las 11:04
Lo mejor será que pongas las tablas que tienes, con unos datos de prueba y el resultado que quieres obtener a partir de esos datos. A ver si así se entiende que es lo que quieres.




-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: shenares
Fecha de publicación: 22/Enero/2021 a las 13:29
Hola Mihura,

Aquí pongo un ejemplo:

Tabla devices:
Id     Manufacturer     Model*     TechName     CommModule
338     Accent     TRK-130          Quectel BC95-B20
177     Accent     TRK-230          Quectel BG96
339     Advantech     WISE-4471          Quectel BG96

Tabla ExecutionDevice:

IdExecutionDevice*     Tester     Device*     App_FW_Version     Module_FW_Version
10     Shenares     TRK-130     v1     1.1
12     Shenares     TRK-230     1.1.10     BG96MAR04A02M1G
13     Shenares     WISE-4471     TBC     TBC
14     Shenares     TRK-130     v00.07.03.00_03132020015039_perf     Comercial release
17     Shenares     TRK-230     TRB1410_R_00.01.05     EC21EUGAR06A01M4G_OCPU_BETA1112

Tabla ExecutionTestCase:

IdExecutionDevice*     IdExecutionTestCase     IdTestcase     Result
10     634     487     Not executed
10     635     486     OK
10     636     562     OK
10     637     563     Not executed
10     638     499     Partial OK
10     639     502     Not executed
10     640     501     OK
10     641     500     Not executed
10     642     485     OK
12     643     484     NOK
12     644     463     OK
12     645     462     OK
14     646     452     NOK
14     647     456     Not apply
17     648     455     Not apply
17     649     454     Not apply


Los parametros que estan con * son lo que estan relacionados tal como puse en el comentario anterior:

Devices(Model) <-> ExecutionDevice(Device). ExecutionDevice esta relacionado con Execution con los parametros Model y Device.
ExecutionDevice (IdExecutionDevice) <-> ExecutionTestCase(IdExecutionTestCase). ExecutionTestCase esta relacionada con ExecutionDevice con los parametros IdExecutionDevice y IdExecutionTestCase.

Lo que me gustaría saber es cuantas filas hay en la tabla ExecutionTestCase con un valor (por ejemplo) "OK" de la columna Result.

Un saludo y gracias de antemano.


Publicado por: Mihura
Fecha de publicación: 22/Enero/2021 a las 14:21
Pues lo dicho, una consulta de totales:

SELECT Count(*), Result FROM ExecutionTestCase  GROUP BY Result


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es



Imprimir página | Cerrar ventana