Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Duda de querie de relacion de tablas

Estas en el tema de Duda de querie de relacion de tablas en el foro de Mysql en Foros del Web. Hola a todos tengo el siguiente problema al lanzar mi querie: tengo mi tabla servicios donde tengo dos campos que son los siguientes: Código PHP: ...
  #1 (permalink)  
Antiguo 13/02/2013, 18:25
 
Fecha de Ingreso: agosto-2011
Ubicación: d.f
Mensajes: 283
Antigüedad: 12 años, 8 meses
Puntos: 4
Duda de querie de relacion de tablas

Hola a todos tengo el siguiente problema al lanzar mi querie:

tengo mi tabla servicios donde tengo dos campos que son los siguientes:

Código PHP:
idTermE // ES EL PRODUCTO QUE ENTRA
idTermS // ES EL PRODUCTO QUE SALE 
en donde me traigo la llave foránea de otra tabla entonces por ejemplo pueden tener el siguiente valor mis columnas:

Código PHP:
idTermE 5
idTermS 

Cuando hago el querie para relacionar que producto entro y que producto salio y saber que producto es: lanzo el siguiente querie:

Código PHP:
select s.marca,s.modelo,s.tecnologia  
            from AsignacionTerminalesAlmacenes a
,AsignacionTerminalesAlmacenescsv b,Servicios s 
            where b
.idAsignacionTerminalesAlmacenes=a.idAsignacionTerminalesAlmacenes and 
            
s.idTermE IS NOT NULL and s.idTermS IS NOT NULL and
            
b.idAsignacionTerminalesAlmacenescsv=s.idTermE and
            
b.idAsignacionTerminalesAlmacenescsv=s.idTermS and 
            
s.idcome='2'
Y NO ME TRAEY NINGUN VALOR!!!!!

me imagino que es por la doble relación que estoy haciendo en esta parte:

Código PHP:
b.idAsignacionTerminalesAlmacenescsv=s.idTermE and
            
b.idAsignacionTerminalesAlmacenescsv=s.idTermS and 
si yo pongo el mismo valor en ambas columnas si me traey ese registro si yo pongo un valor diferente no me traey ningún REGISTRO!!!

AYUDAAAAAAAAAAAA

Última edición por herwex; 13/02/2013 a las 19:23 Razón: correcion
  #2 (permalink)  
Antiguo 13/02/2013, 21:04
 
Fecha de Ingreso: agosto-2011
Ubicación: d.f
Mensajes: 283
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Duda de querie de relacion de tablas

Ayudaaaaaaaaaaaa por favor siempre me echan la mano con sus comentarios
  #3 (permalink)  
Antiguo 14/02/2013, 13:33
 
Fecha de Ingreso: octubre-2008
Mensajes: 127
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Duda de querie de relacion de tablas

Hola,

has probado con:

Código SQL:
Ver original
  1. (b.idAsignacionTerminalesAlmacenescsv=s.idTermE OR
  2.             b.idAsignacionTerminalesAlmacenescsv=s.idTermS) AND

Saludos.
  #4 (permalink)  
Antiguo 14/02/2013, 14:11
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Duda de querie de relacion de tablas

Hola herwex:

No me queda claro qué es lo que quiere obtener, pero cuando en una tabla tienes una referencia doble hacia otra tabla, lo que tienes que hacer es un doble JOIN sobre la tabla catálogo, utilizando un alias distinto... ejemplos en la red hay mucho, pero acabo de contestar un post en otro foro donde se tiene algo parecido:

Supongamos que tienes la siguiente información:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM personas;
  2. +------------+--------+-----------+-----------+
  3. | id_persona | nombre | apellido1 | apellido2 |
  4. +------------+--------+-----------+-----------+
  5. |          1 | Pedro  | Perez     | Mateos    |
  6. |          2 | Maria  | Ramirez   | Marcos    |
  7. |          3 | Fulano | de        | Tal       |
  8. |          4 | Sutano | por       | Cual      |
  9. +------------+--------+-----------+-----------+
  10. 4 rows IN SET (0.00 sec)
  11.  
  12. mysql> SELECT * FROM relaciones;
  13. +-----------+----------+----------+
  14. | id_pareja | miembro1 | miembro2 |
  15. +-----------+----------+----------+
  16. |         1 |        1 |        2 |
  17. |         2 |        3 |        4 |
  18. +-----------+----------+----------+
  19. 2 rows IN SET (0.00 sec)

Observa que la tabla relaciones tiene una doble referencia hacia la tabla de personas (campos miembro1 y miembro2)... si quisieras obtener los nombres de las personas que forman cada pareja lo que haces es lo siguiente:

Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->   id_pareja,
  3.     ->   CONCAT(P1.nombre, ' ', P1.apellido1, ' ', P1.apellido2) miembro1,
  4.     ->   CONCAT(P2.nombre, ' ', P2.apellido1, ' ', P2.apellido2) miembro2
  5.     -> FROM relaciones R
  6.     -> INNER JOIN personas P1 ON P1.id_persona = R.miembro1
  7.     -> INNER JOIN personas P2 ON P2.id_persona = R.miembro2;
  8. +-----------+--------------------+----------------------+
  9. | id_pareja | miembro1           | miembro2             |
  10. +-----------+--------------------+----------------------+
  11. |         1 | Pedro Perez Mateos | Maria Ramirez Marcos |
  12. |         2 | Fulano de Tal      | Sutano por Cual      |
  13. +-----------+--------------------+----------------------+
  14. 2 rows IN SET (0.00 sec)

Observa que el "truco" está en colocar dos veces la tabla personas:

Código:
...
INNER JOIN personas P1 ON P1.id_persona = R.miembro1
INNER JOIN personas P2 ON P2.id_persona = R.miembro2;
...
Y una recomendación final: Utiliza JOIN's en lugar de hacer las uniones en el FROM-WHERE

Código:
En lugar de hacer esto:

FROM tabla1, tabla2 WHERE tabla1.campo = tabla2.campo

Has esto:

FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo
Aunque el resultado es el mismo, el JOIN está optimizado para hacer las consultas más eficientes.

Has la prueba y si continuas con problemas lo comentas en el foro.

Saludos
Leo.
  #5 (permalink)  
Antiguo 15/02/2013, 10:34
 
Fecha de Ingreso: agosto-2011
Ubicación: d.f
Mensajes: 283
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Duda de querie de relacion de tablas

Muchas gracias Leonardo_josue eso era exactamente lo que ocupada!!!

Etiquetas: campos, relacion, select, tabla, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:12.