hola pithon:
No termino de entender qué es lo que quieres obtener... es decir, a partir de los datos de ejemplo que pones en tu tabla ¿Cuál es la salida correcta?. Es posible que tengas un problema de JERARQUÍA DE OPERADORES, pues hay que recordar que las comparaciones AND se ejecutan antes que las comparaciones OR.
Código:
En matemáticas 1+2*4 NO ES LO MISMO QUE (1+2)*4
En Lógica relacional pasa algo similar:
Código SQL:
Ver originalmysql> CREATE TABLE tabla (auto VARCHAR(10), color VARCHAR(10),
-> matricula INT);
Query OK, 0 ROWS affected (0.17 sec)
mysql> INSERT INTO tabla VALUES ('coche1', 'rojo', 111),
-> ('coche2', 'verde', 222), ('coche3', 'azul', 333);
Query OK, 3 ROWS affected (0.05 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM tabla;
+--------+-------+-----------+
| auto | color | matricula |
+--------+-------+-----------+
| coche1 | rojo | 111 |
| coche2 | verde | 222 |
| coche3 | azul | 333 |
+--------+-------+-----------+
3 ROWS IN SET (0.00 sec)
mysql> SELECT * FROM tabla
-> WHERE matricula=333 AND color='azul' OR auto='coche2';
+--------+-------+-----------+
| auto | color | matricula |
+--------+-------+-----------+
| coche2 | verde | 222 |
| coche3 | azul | 333 |
+--------+-------+-----------+
2 ROWS IN SET (0.01 sec)
mysql> SELECT * FROM tabla
-> WHERE matricula=333 AND (color='azul' OR auto='coche2');
+--------+-------+-----------+
| auto | color | matricula |
+--------+-------+-----------+
| coche3 | azul | 333 |
+--------+-------+-----------+
1 ROW IN SET (0.00 sec)
Esto igual no tiene nada que ver con el planteamiento de tu problema, pero sería conveniente que lo revises. En cuanto a tu problema, pues sigo sin entender por qué es necesario poner los tres campos en la búsqueda... a final de cuentas, si lo único que te interesa es la matrícula, pues es el que deberías utilizar.
Código:
EDITADO: Veo que el compañero gnzsoloyo ya publicó lo mismo jejeje... espero que la explicación te sirva para ver el problema
Saludos
Leo.