PDA

Ver la Versión Completa : INNER JOIN..lo tengo bién???


Driau
19/02/08, 16:13:04
Hola a todos, estoy intentando realizar un INNER JOIN..pero nada.

Creo que no voy demasiado desencaminado. He puesto lo siguiente:

SELECT AUFNR PLNBEZ GAMNG GLTRS GSTRS
INTO CORRESPONDING FIELDS OF TABLE IT_AFKO
FROM AFKO
INNER JOIN M_MAT1T
ON M_MAT1T~MTART = 'ZACC'
WHERE GSTRS IN S_DATUM.

La intención es que me seleccione todos los campos de la 1a linea de la tabla AKFO y los meta en IT_AFKO siempre y cuando se cumpla que el tipo de material de cada OF (orden de fabricacion) se un ZACC y la fecha (contenida en la tabla AFKO) se encuentre dentro del rango s_datum.

Gracias a todos!

DavidXD_XD
19/02/08, 16:52:57
Hola Driau, te comento sobre la sentencia Select con INNER JOIN, en "ON" es para comparar los 2 campos en comun entre las 2 tablas, y en WHERE viene las codiciones individuales

SELECT AUFNR PLNBEZ GAMNG GLTRS GSTRS
INTO CORRESPONDING FIELDS OF TABLE IT_AFKO
FROM AFKO
INNER JOIN M_MAT1T
ON M_MAT1T~campo1 = AFKO~campo1
AND M_MAT1T~campo2 = AFKO~campo2
WHERE AFKO~GSTRS IN S_DATUM
AND M_MAT1T~MTART = 'ZACC'.

Campo1 y Campo2 son 2 campos en comun que tienen esas 2 tablas x ejm, lo pongo asi xq no tengo acceso a SAP :mad: , espero te sirva ....

larmadovr
19/02/08, 17:07:09
Para hacer un inner join debes tener llaves con las cuales ligas las tablas. En el caso de M_MAT1T es una vista y no estoy seguro de que se pueda hacer la relación que quieres, por que no encuentro con que campo ligarla.

Te voy a pasar un ejemplo de un inner join:

SELECT mara~bismt
keko~werks
keko~kalnr
keko~matnr
keph~kst001
keph~kst002
keph~kst003
keph~kst004
keph~kst005
keph~kst006
keph~kst007
keph~kst008
keph~kst009
keph~kst010
keph~kkzst
makt~maktx
INTO TABLE ti_serv_costes
FROM keko INNER JOIN mara
ON keko~matnr EQ mara~matnr " Se ligan llave vs llave
INNER JOIN keph
ON keko~kalnr EQ keph~kalnr
INNER JOIN makt
ON keko~matnr EQ makt~matnr
WHERE mara~matnr IN s_matnr
AND keko~werks EQ p_centro
AND keph~kkzst EQ ''.

Dame más detalles para poder ayudarte.

Hay otras maneras de poder realizar ese trabajo. Pasame una descripcion del requerimiento que te pidieron. Yo estoy al pendiente para solucionarlo.

Saludos...

bacha
19/02/08, 21:07:45
Compañero, te dejo un ejemplo de una consulta INNER JOIN entre dos tablas, si tienes alguna duda, me lo comentas


select spfli~countryfr spfli~cityfrom spfli~airpfrom spfli~countryto
spfli~cityto sflight~fldate sflight~price sflight~currency
sflight~planetype sflight~seatsmax sflight~seatsocc
into corresponding fields of table it_salida
from spfli
inner join sflight
on spfli~carrid = sflight~carrid
and spfli~connid = sflight~connid
where spfli~connid in connid
and spfli~carrid in carrid.


1. seleccionas los campos de las dos tablas... los que quieras obtener de ellas.

2. en tu tabla interna

3.de que tabla

4. con que otra tabla haras la relacion

5. que tus campos llaves sean iguales (depende la logiica, segun lo que quieras obtener)

6. y por ultimo que los campos que necesitas sean iguales a los de tu parameters o select-options.

Saludos.

DavidXD_XD
19/02/08, 21:13:10
Hola de nuevo, yo tambien te dejo uno con varias tablas .... ahi hay algo nuevo como una especie de etiqueta que se le coloca a una tabla .... mara AS a, afko AS b .... a y b harian el papel de mara y afko respectivamente para este ejem.

SELECT b~aufnr b~rsnum b~werks d~lgort a~rspos
a~matnr a~charg a~bdmng a~meins e~lgpla AS lgpla_d
INTO CORRESPONDING FIELDS OF TABLE gt_aufnr
FROM resb AS a INNER JOIN caufv AS b ON a~rsnum = b~rsnum
AND a~aufnr = b~aufnr
INNER JOIN rkpf AS c ON a~rsnum = c~rsnum
INNER JOIN afpo AS d ON a~aufnr = d~aufnr
INNER JOIN mlgt AS e ON a~matnr = e~matnr
INNER JOIN mara AS f ON a~matnr = f~matnr
WHERE b~aufnr IN s_aufnr
AND b~auart IN s_auart
AND b~gstrs IN s_gstrs
AND b~werks IN s_werks
AND d~lgort EQ p_lgort
AND d~posnr EQ c_posnr
AND a~kzear EQ space
AND a~charg NE space
AND a~bdmng NE space
AND e~lgnum EQ c_lgnum
AND e~lgtyp EQ c_100
AND f~mtart IN ('CONC','MPCL','BULK').

Espero tambien te sirva ... :D

golden_fbi
15/04/09, 17:32:20
Hola disculpa y si quisiera que me trajera otros campos de una tabla a la que se le hizo el inner join pero no tiene el mismo campo la otra tabla con la que se une? por ejemplo


alumnos con sus materias correspondientes.

- mi tabla panel asocia que alumnos van con que materias, nada mas tiene el campo de idalumno y idmateria.

-hago su inner join y cuando le doy a mi programa buscar, me encuentra que idalumno va con que idmateria.

-¿ pero como le hago para saber en esa misma busqued que aparte de que me despliegue que alumno va con que materia , tambien me saque el nombre del alumno y ese campo de alumno esta contendio en la tabla de alumno.?

Muchas gracias