Hola piponsio:
En primer lugar y antes que nada bienvenido al foro, y ahora si entremos en materia...
Cita: [dejen terminar no empiesen con JOIN blabla]
Mucho ojo, si consideras que lo que te podemos decir es puro bla bla, entonces ¿qué haces en el foro? tu comentario es una total falta de respeto hacia los foristas.
Ahora bien, volviendo a tu problema... en la primer consulta, como ya te habrás dado cuenta, es un problema de columna ambigua, es decir, la columna date existe en ambas tablas, por lo tanto el motor de BD no puede determinar a cuál de las dos te refieres. La consulta 2 es correcta en cuanto a que se puede ejecutar, pero si el resultado no es el que quieres, bueno, tendrías que explicarnos mejor qué es lo que necesitas. Sin embargo tengo que poner un BLA BLA BLA acerca de los JOIN's, porque tienes un problema grave.
Tal como estás haciendo la consulta se está realizando un producto cartesiano entre tus tablas esto es porque NO ESTÁS COLOCANDO NINGUNA CONDICIÓN DE UNIÓN ENTRE TUS TABLAS. Checa este ejemplo
Código MySQL:
Ver original+------+-------------+
| id | descripcion |
+------+-------------+
| 1 | UNO |
| 2 | DOS |
| 3 | TRES |
+------+-------------+
+------+-------------+
| id | descripcion |
+------+-------------+
| 1 | ONE |
| 2 | TWO |
| 3 | THREE |
+------+-------------+
+------+-------------+------+-------------+
| id | descripcion | id | descripcion |
+------+-------------+------+-------------+
| 1 | UNO | 1 | ONE |
| 2 | DOS | 1 | ONE |
| 3 | TRES | 1 | ONE |
| 1 | UNO | 2 | TWO |
| 2 | DOS | 2 | TWO |
| 3 | TRES | 2 | TWO |
| 1 | UNO | 3 | THREE |
| 2 | DOS | 3 | THREE |
| 3 | TRES | 3 | THREE |
+------+-------------+------+-------------+
Esto es un producto cartesiano, es decir, cada elemento de la tabla1 se une con un elemento de la tabla2... para evitar esto es necesario colocar las condiciones de unión entre las tablas:
Código MySQL:
Ver original -> WHERE tabla1.id
= tabla2.id
; +------+-------------+------+-------------+
| id | descripcion | id | descripcion |
+------+-------------+------+-------------+
| 1 | UNO | 1 | ONE |
| 2 | DOS | 2 | TWO |
| 3 | TRES | 3 | THREE |
+------+-------------+------+-------------+
O mejor aun, utilizar JOIN's aunque pienses que es solo BLA BLA BLA
Código MySQL:
Ver original -> ON tabla1.id
= tabla2.id
; +------+-------------+------+-------------+
| id | descripcion | id | descripcion |
+------+-------------+------+-------------+
| 1 | UNO | 1 | ONE |
| 2 | DOS | 2 | TWO |
| 3 | TRES | 3 | THREE |
+------+-------------+------+-------------+
En cuanto a esta observación:
Cita: me lanza las tablas pero las de la tabla 2 al lado de la tabla 1
No se qué tiene de raro ni qué es lo que esperas obtener... al colocar * en el SELECT siempre te pondrá en primer lugar todos los campos de la tabla1, después los de la tabla2 y así los de todas las tablas que listaste en el SELECT... ¿Quiéres cambiar el orden y omitir algún campo? entonces no utilices * y lista los campos como quieres que se presenten:
Código MySQL:
Ver originalmysql
> SELECT tabla2.descripcion
, tabla1.id
, tabla1.descripcion
-> ON tabla1.id
= tabla2.id
; +-------------+------+-------------+
| descripcion | id | descripcion |
+-------------+------+-------------+
| ONE | 1 | UNO |
| TWO | 2 | DOS |
| THREE | 3 | TRES |
+-------------+------+-------------+
Finalmente una recomendación: mucho ojo en utilizar nombres de campos en inglés, ya que estos pueden ocasionar problemas. DATE es en realidad un tipo de dato, así es que puedes tener problemas, te recomiendo utilizar palabras en español o si lo prefieres agregar algún calificativo a los campos. como date_compra, date_alta, etc.
Saludos
Leo.