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

Algo de lógica! (SQL)

Estas en el tema de Algo de lógica! (SQL) en el foro de Bases de Datos General en Foros del Web. hola a todos... Tengo dos tablas en mi base de datos que se relacionan con otra.. ahora deseo mostrar la información que contiene la tercer ...
  #1 (permalink)  
Antiguo 30/08/2004, 07:23
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 6 meses
Puntos: 1
Algo de lógica!

hola a todos...

Tengo dos tablas en mi base de datos que se relacionan con otra.. ahora deseo mostrar la información que contiene la tercer tabla, allí solo tengo códigos, pero estos se repiten por ejemplo:

codigo1 codigo2
1 2
1 3
1 4
2 3
2 3
2 1

Me explico, la información del codigo2 puede estar en varias partes relacionada con el codigo 1, hasta ahi bien... pero me he metido un problema porque no se bien como hacer cuando muestro la información es decir.. si el número que tengo en el codigo2 ya fué mostrado que no lo muestre...

entonces llego a la tabla3 que tiene estos campos, con codigo1 muestro la información de la tabla1 y con codigo2 la información de la tabla dos.. asi la tabla3 se me convierte en puente.. pero realmente el lio es solo mostrar una vez el codigo2 si ya aparecio no se puede volver a mostrar...

mmm me hice entender???
  #2 (permalink)  
Antiguo 30/08/2004, 07:36
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
HOla salome

primeramente no se si sea el foro adecuado para postear esta duda /(base de datos), pero si mandas el codigo te podria ayudar mas facilmente


  #3 (permalink)  
Antiguo 30/08/2004, 07:41
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 2 meses
Puntos: 3
no es por nada, pero a lo mejor deberias revisar el diseño de las tablas.
puede ser que te hayas hecho un pequeño lio con la integridad referencial.
una cervecita y una siesta aclara la mente.
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #4 (permalink)  
Antiguo 30/08/2004, 07:47
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 6 meses
Puntos: 1
Si creo que tendré que tomar licor aca en la oficina para aclarar mi mente.. asi o la aclaro o me la aclaran..

Código PHP:
 $result=mysql_query(" select *from tabla3 as P, 
                                          tabla2 as D
                                          where    P.codigo2  = D.codigo2
                                          order by identificador"
,$conectar); 

Bueno asi muestro sin ningun problema todos los documentos pero se repiten quiero es que solo se muestre una vez para que no se vea información igual, como valido esto!!!

un saludo.
  #5 (permalink)  
Antiguo 30/08/2004, 08:05
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
si esta bien estructurada tu base de datos

creo que el error estaria en el order by,,, primero que quieres hacer con el
order by identificador",$conectar); ???

segundo.

yo haria algo asi

Código PHP:

$consulta
="select P.codigo2 from tabla3 P, tabla2 D where P.codigo2=D.codigo2"
cheka esto haber si no te lo repite

creo que si no es en el order by es en el select *
  #6 (permalink)  
Antiguo 30/08/2004, 08:15
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 6 meses
Puntos: 1
no funciona.. bueno que intento hacer con el order by.. ordenar por un campo que tengo en tabla2 eso sale bien, tambien trae toda la información que necesito... lo único que deseo es que no se repita información porque en codigo2 pueden existir varios datos con el mismo contenido, porque asi lo requiero... y asi funciona bien!.. solo es que si por ejemplo estoy mostrando docuementos, información de documentos.. si el documento A ya lo mostre y lo vuelvo a encontrar pues que este documento A no vuelva a ser visualizado en esa consulta... el problema creo va en el where ... pero no se como poner la condición!!
  #7 (permalink)  
Antiguo 30/08/2004, 08:47
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
mmm mas bien tendriamos que ver que tabla se relaciona con que por que el where tendria que funcionar mas bien es ver que tablas se relacionan mmmm oye salome podrias mandarme las tablas y campos mmm si puedes por el mns ya te agrege...

mi mail:

[email protected]
  #8 (permalink)  
Antiguo 30/08/2004, 08:59
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 6 meses
Puntos: 1
El problema no es de las tablas, tampoco de integridad... creo que no me has entendido

el cuento es que quiero mostrar una información, donde no se repita esta si ya fué mostrada...

es decir si el dato1 fue ya visualizado en un listado, y vuelve a aparecer en el select ya no lo muestre porque ya fue visto...

  #9 (permalink)  
Antiguo 30/08/2004, 11:00
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 2 meses
Puntos: 3
hola, Salome.

a lo mejor lo que quieres es que aparezcan los registros que de la tabla P que esten en la tabla D.

prueba con esto:
Código:
select distinct P.*
from tabla3 as P, tabla2 as D
where P.codigo2 = D.codigo2
order by P.identificador
es equivalente a esto:

Código:
select distinct P.*
from tabla3 as P
inner join tabla2 as D on D.codigo2 = P.codigo2
order by P.identificador
la clausula "distinct" eliminara los registros duplicados.
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.

Última edición por haron; 30/08/2004 a las 11:01
  #10 (permalink)  
Antiguo 30/08/2004, 12:29
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 6 meses
Puntos: 1
Listo! me funciono! pero el distinct no lo hice con P (tabla3) si no con D(tabla2) y funciono!! gracias...
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 19:33.