Dejando de lado tu ditraba, que ya te he respondido debidamente por vía administrativa, paso a demostrarte rápidamente que si me atengo a la descripción de tus tablas, y a los datos aportados en el primer post, la consulta que proponías inicialmente
forzosamente debería dar corretamente el resultado.
Esta sería la creación de las tablas. No defino las FK que deberían ser necesarias, porque generaría un error al no existir el producto dado en la tabla,
tal y como te lo plantee:
Código MySQL:
Ver originalmysql>
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql>
Query OK, 0 rows affected (0.03 sec)
mysql>
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
-> VALUES(1641, 'producto demo',25); Query OK, 1 row affected (0.01 sec)
-> (0, '20010233'),
-> (1641, '20120706');
Query OK, 2 rows affected (0.00 sec)
Query OK, 7 rows affected (0.08 sec)
Hecho esto, pasemos a tu consulta, que he escrito nada más que en una forma estructurada, sin sacarle ni ponerle nada:
Código MySQL:
Ver originalmysql>
-> stc.id_prod,
-> stc.ultima_sol,
-> count(stod.id_prod
) esperan
-> avstock_cab stc
-> ON stc.id_prod
= stod.id_prod
+---------+------------+---------+
| id_prod | ultima_sol | esperan |
+---------+------------+---------+
| 0 | 20010230 | 3 |
| 1641 | 20120706 | 4 |
+---------+------------+---------+
Como es
notorio, el resultado obtenido indica para el primer producto la cantidad de tres (3)
que es precisamente lo que dices que se debe obtener, y que yo te dije que era lo que debía darte.
Ahora bien, probemos entonces agregando una operación más, con el id de producto en cero (0):
Código MySQL:
Ver original -> (0, '20010234');
Query OK, 1 row affected (0.06 sec)
O sea: Mismo producto, solicitud diferente.
El resultado:
Código MySQL:
Ver original -> stc.id_prod,
-> stc.ultima_sol,
-> count(stod.id_prod
) esperan
-> avstock_cab stc
-> ON stc.id_prod
= stod.id_prod
+---------+------------+---------+
| id_prod | ultima_sol | esperan |
+---------+------------+---------+
| 0 | 20010233 | 6 |
| 1641 | 20120706 | 4 |
+---------+------------+---------+
¿Quedó claro?
Se entiende el problema?
El error consiste en que el agrupamiento debería ser incluyendo el numero de solicitud, para evitar que se sumen valores incorrectamente.
Pero por sobre todo: No existe un error en la cuenta, sino que hay un registro adicional con ese ID del producto, que no pertenece al cálculo.
Fuera de eso, mantengo todo lo dicho, especialmente respecto a que no poner una restricción FK es diseñar basura.