Ir al contenido


Foto

left join entre tablas de n a n


  • Por favor identifícate para responder
6 respuestas en este tema

#1 matteomatico

matteomatico

    Member

  • Miembros
  • PipPip
  • 31 mensajes

Escrito 08 agosto 2012 - 09:56

tengo 3 tablas:
-persona
-obtiene
-series

entre persona y series se crea una tabla (n:n)llamada obtiene los cuales emigran las llaves foraneas de persona y serie (per_id y ser_id)

sus atributos son los siguientes:

persona                                  obtiene                          series
-----------                                ----------                          ----------
per_id                                    per_id                            ser_id
per_nombre                            ser_id                            ser_nombre
per_apellido

el problema es que me sale error al querer hacer in left join

$sql="select * from persona p LEFT JOIN obtiene o ON p.ser_id=o.ser_id";


alguna idea, una ayudita de por que no me sale la consulta???

  • 0

#2 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 09 agosto 2012 - 12:57

Es que, según tu definición de las tablas, el ID de la tabla persona es per_id y no ser_id como pones en el left join. El SQL debería ser así

select * from persona p LEFT JOIN obtiene o ON o.per_id = p.per_id

  • 0

#3 matteomatico

matteomatico

    Member

  • Miembros
  • PipPip
  • 31 mensajes

Escrito 09 agosto 2012 - 05:38

es que necesito que me muestre los datos del atributo ser_id y lo he intentado al reves

SELECT * FROM obtiene o LEFT JOIN persona p ON o.per_id = p.per_id


y nada!
  • 0

#4 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 09 agosto 2012 - 06:58

A ver, que me parece que no nos estamos entendiendo. ¿Tu qué necesitas saber, el ser_nombre? Porque si es así, si no metes en el SQL la tabla series no lo sacarás

Si es eso lo que buscas, el SQL debería ser algo así


select *
from persona p
  left outer join obtiene o on o.per_id = p.per_id
  left outer join series s on s.ser_id = o.ser_id


Para aclarar conceptos, el SQL que te he puesto en mi primer mensaje y el SQL que tu has puesto en tu segundo mensaje, son equivalentes, los registros devueltos y la información devuelta es la misma y, a simple vista, son sentencias SQL válidas, por lo que algún resultado tienen que devolverte (si hay registros relacionados entre persona y series => se alimenta la tabla obtiene).

Espero te sirva

Nos leemos

  • 0

#5 matteomatico

matteomatico

    Member

  • Miembros
  • PipPip
  • 31 mensajes

Escrito 09 agosto 2012 - 03:36

GRACIAS ME RESULTO!
  • 0

#6 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 09 agosto 2012 - 04:03

Entonces lo marco como resuelto ;)
  • 0

#7 matteomatico

matteomatico

    Member

  • Miembros
  • PipPip
  • 31 mensajes

Escrito 10 agosto 2012 - 09:03

asi es muchisimas gracias!
  • 0




IP.Board spam blocked by CleanTalk.