0

hola me da Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2

En el segundo Select y no se porque, aqui coloco el codigo:

select a.COD_CLIENTE, a.TIPO_CLIENTE, a.NOMBRE, a.TELEFONO, a.COD_SEGMENTO, b.desc_segmento
from dm_cliente a inner join dm_segmento b;

select a.COD_CLIENTE, b.COD_CLIENTE 
from hc_consumo a left join dm_cliente b; 

el segundo select me aparece subrayado en rojo y no se porque.

BetaM
  • 30,571
  • 7
  • 32
  • 50
  • 1
    dónde están las condiciones de tus `join`s? – Lamak Feb 15 '21 at 13:42
  • Creo que te ayudaría mucho revises en estos casos la sintaxis en la doc. oficial: https://dev.mysql.com/doc/refman/8.0/en/join.html – BetaM Feb 15 '21 at 17:18

1 Answers1

1

Bueno realizando la revisión a las consultas que expones,se observa que no haces la relación entre las tablas por su campo en común.

Por lo general cuando se usa inner join, left join o right join, se requiere especificar en que campo se relaciona.

Para que puedas entender un poco más a profundidad el uso de estos, y de una forma más sencilla, te comparto la siguiente ruta:

https://programacionymas.com/blog/como-funciona-inner-left-right-full-join

Así mismo, observo que intentas unir 2 veces una misma consulta, si no deseas relacionar directamente la información, puedes llamar a la tabla cuantas veces quieras cambiando el alias y sin el uno de los join, esto sería separando las tablas con la el simbolo coma, te muestro un ejemplo decomo sería:

select a.COD_CLIENTE, a.TIPO_CLIENTE, a.NOMBRE, a.TELEFONO, a.COD_SEGMENTO, 
b.desc_segmento
from dm_cliente a, dm_segmento b;

select a.COD_CLIENTE, b.COD_CLIENTE 
from hc_consumo a, dm_cliente b; 

Ya para controlar la información que obtienes, tendrías que hacerlo mediante las condicionales, te dejo un ejemplo:

En este ejemplo hago de cuenta que tu tabla dm_segmento tiene un campo que llama COD_SEGMENTO, ya que observo que en la tabla dm_cliente existe.

select a.COD_CLIENTE, a.TIPO_CLIENTE, a.NOMBRE, a.TELEFONO, a.COD_SEGMENTO, 
b.desc_segmento
from dm_cliente a, dm_segmento b
where a.COD_SEGMENTO = b.COD_SEGMENTO and a.TELEFONO = 5555555;

Pero si deseas relacionarlos, te comparto url donde podrás entender el tema de los CROSS JOIN, la cual se asemeja más a la forma expuesta por tus consultas y es la más recomendada:

https://www.tutorialesprogramacionya.com/mysqlya/temarios/descripcion.php?inicio=63&cod=60&punto=66

NOTA: Es importante tener encuenta el uso de los joins implicitos, dado que en la ruta que compartiré a continuación, podrás entender el uso de los joins implicitos y los explicitos.

¿Cual es la diferencia entre joins implícitos y explícitos?

BetaM
  • 30,571
  • 7
  • 32
  • 50
jGomez
  • 1,480
  • 1
  • 4
  • 5
  • 2
    Por favor no uses joins implícitos, especialmente si el op había usado correctamente joins explícitos, simplemente le faltaban las condiciones de `ON` – Lamak Feb 15 '21 at 14:12
  • 1
    le dejé un enlace donde perfectamente explicaban el uso de los joins, ahora lo que le hice es mostrarle otra forma, ya que puede que se adapte más a lo que desea hacer. Queda a disposición del que lo necesite, escoger cual forma le es mas conveniente – jGomez Feb 15 '21 at 15:05
  • 2
    es que en ese caso deberías haber mostrado un `CROSS JOIN`, los joins implícitos están deprecados hace más de 20 años – Lamak Feb 15 '21 at 15:08
  • 1
    Claro, eso es comprendible. De igual manera en mi caso prefiero hacerlo de la forma explicita de los joins. No detallé el uso de los joins ya que me pareció muy bien explicado en la url pero si quedó faltando el uso de los cross join. – jGomez Feb 15 '21 at 15:24
  • 1
    @Lamak he modificado la respuesta y he anexado lo que mencionas y ya queda expuesto los escenarios, recomendaciones y usos, según lo que se desee. – jGomez Feb 15 '21 at 15:32