Con permiso del compañero gnzsoloyo:
P1 y P2 son alias para la tabla PRODUCTOS ya que tienes una especie de relación circular
Código:
FROM productos P1 INNER JOIN productos P2
en cuanto al error de tu consulta, este se debe a que cuando pones esto:
no especificas a qué tabla se refiere el campo VALOR, y este existe tanto en P1 como en P2, por lo tanto es necesario que especifiques también el alias de la tabla correspondiente.
Código:
P1.VALOR = 'mediana' o P2.VALOR = 'mediana'
Ahora bien, no entiendo qué ID es el que tiene que regresar tu consulta, puedes probar con esto, pero no sé si es lo que estás buscando
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.83 sec)
-> (1, 1, 1, 'ROJO'),
-> (2, 1, 1, 'VERDE'),
-> (3, 2, 1, 'PEQUEÑA'),
-> (4, 2, 1, 'MEDIANA');
Query OK, 4 rows affected (0.14 sec)
-> where T1.VALOR
= 'VERDE' and T2.VALOR
= 'MEDIANA'; +---------+
| PROD_ID |
+---------+
| 1 |
+---------+
T1 y T2 al igual que P1 y P2 son alias de la misma tabla.
Si no es lo que quieres obtener te pediría que nos explicaras mejor cuál es la salida que estás esperando.
Saludos.
Leo.