Hola Bullet:
Lo que está pasando se llama producto cartesiano, y es ocasionado porque no estás definiendo ninguna relación entre tus tablas, observa este ejemplo, supongamos que tienes estas dos tablas;
Código MySQL:
Ver original+------+-------------+
| id | descripcion |
+------+-------------+
| 1 | UNO |
| 2 | DOS |
| 3 | TRES |
+------+-------------+
+------+-------------+
| id | descripcion |
+------+-------------+
| 1 | ONE |
| 2 | TWO |
| 3 | THREE |
+------+-------------+
Observa que la relación entre tus tablas esta dada por el campo ID, y que sería de uno a uno, tu estás haciendo algo como esto:
Código MySQL:
Ver original+------+-------------+------+-------------+
| id | descripcion | id | descripcion |
+------+-------------+------+-------------+
| 1 | UNO | 1 | ONE |
| 3 | TRES | 1 | ONE |
| 1 | UNO | 2 | TWO |
| 3 | TRES | 2 | TWO |
| 1 | UNO | 3 | THREE |
| 3 | TRES | 3 | THREE |
+------+-------------+------+-------------+
Esto es un producto cartesiano y lo que hace es relacionar cada elemento de la tabla1 con cada elemento de la tabla2. Lo que tienes que hacer es simplemente definir las relaciones entre tus tablas. Yo te recomiendo que hagas uso de los JOIN's, así:
Código MySQL:
Ver original+------+-------------+------+-------------+
| id | descripcion | id | descripcion |
+------+-------------+------+-------------+
| 1 | UNO | 1 | ONE |
| 3 | TRES | 3 | THREE |
+------+-------------+------+-------------+
Observa que en la cláusula ON se especifican los campos por los que están relacionados las tablas. También lo puedes hacer en el WHERE, aunque no lo recomiendo en absoluto.
Código MySQL:
Ver original+------+-------------+------+-------------+
| id | descripcion | id | descripcion |
+------+-------------+------+-------------+
| 1 | UNO | 1 | ONE |
| 3 | TRES | 3 | THREE |
+------+-------------+------+-------------+
Saludos
Leo.