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

urgente duda con relacion?

Estas en el tema de urgente duda con relacion? en el foro de Bases de Datos General en Foros del Web. hola maestros tengo una relacion entre dos trablas que funciona bien pero si hago una consula aparece el primer registro repetido dos veces y si ...
  #1 (permalink)  
Antiguo 06/01/2004, 12:42
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.931
Antigüedad: 21 años, 4 meses
Puntos: 2
urgente duda con relacion?

hola maestros tengo una relacion entre dos trablas que funciona bien pero si hago una consula aparece el primer registro repetido dos veces y si hay un segundo registro este no aparece.


$consulta= "SELECT a.*,b.* from avisoeco as a , usuarios_avisos as b where a.rut=b.rut and a.alta='no'";

nota:la union entre las tablas es el rut





ahora si lo hago asi todo funciona bien , salvo que no puedo obter la informacion de otra tabla , osea si:

$consulta= "SELECT * from avisoeco where alta='no' ";


alguna orientacion porfavor.....
gracias de ante mano


nota :lo estoy haciendo en mysql

Última edición por mveraa; 06/01/2004 a las 15:09
  #2 (permalink)  
Antiguo 06/01/2004, 14:28
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
si las 2 tablas tienen los mismos campos usa UNION

SELECT * from avisoeco where alta='no' UNION SELECT * from usuarios_avisos where alta='no';
__________________
Dedicado a proyectos web, actualmente desarrollando un sistema de diseño de flyers online muy fácil de usar.
  #3 (permalink)  
Antiguo 06/01/2004, 17:50
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.931
Antigüedad: 21 años, 4 meses
Puntos: 2
logre hacer que la consulta me muestre todos los registros con sus relaciones , pero todos los registros se repetin dos veces . alguien me puede orientar porfa .

hice la prueba en el myadmin :

SELECT a. * , b.rut, b.fono
FROM avisoeco AS a, usuarios_avisos AS b
WHERE a.rut = b.rut AND a.alta = 'no'
ORDER BY conta ASC LIMIT 0 , 30


usado asi como me indicaron me marco error

SELECT * from avisoeco where alta='no' UNION SELECT * from usuarios_avisos where alta='no'

pense al principio que era mi script pero puse :
SELECT * from avisoeco where alta='no'

y funciona perfecto , salvo como puse no puedo obtener los datos de las otras tablas...


chaito y gracias a todos.
  #4 (permalink)  
Antiguo 06/01/2004, 21:45
 
Fecha de Ingreso: diciembre-2003
Mensajes: 53
Antigüedad: 20 años, 4 meses
Puntos: 0
A ver...
Tu quieres mostrar información de 2 tablas unidas con el campo rut y con la condición de alta='no'

Entonces...
SELECT * FROM a, b
WHERE a.rut=b.rut AND a.alta='no'
ORDER BY conta ASC LIMIT 0 , 30

(Sustituye por tus tablas)

Con eso debe ser suficiente...
Si te salen datos suplicados no será que realmente tienes datos duplicados en la BD..?

La otra sería con...
DISTINCT SELECT * FROM a, b
WHERE a.rut=b.rut AND a.alta='no'
ORDER BY conta ASC LIMIT 0 , 30

Pero no me parece correcto que existan registros duplicados(si esa es la intención desde un principio)

Podrías mostrar algunos resultados de la consulta..?

Saludos

Giorgio
  #5 (permalink)  
Antiguo 07/01/2004, 09:40
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.931
Antigüedad: 21 años, 4 meses
Puntos: 2
bueno no me funciono lo que propusiste , ademas ya lo intente lo unica solucion que he tomado por el momento es saltarme de dos en dos para que me tome solo un registro y omita el duplicado .


esto en realida me parece muy extraño

¿podria ser que deba que tener los campos de las dos tablas como primary key?


gracias a todos
  #6 (permalink)  
Antiguo 07/01/2004, 13:20
 
Fecha de Ingreso: diciembre-2003
Mensajes: 53
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola mveraa
Hmmm... pues yo procuro usar un ID único de una tabla con otro campo llamado igual y en otra tabla para unir tablas.
tabla1:
tab1_ID
tab1_Nombre

tabla2:
tab2_ID
tab1_ID <-- ID externa, solo que se llame igual y del mismo tipo
tab2_Nombre

Con tu consulta tal vez el server "piensa"...
"Aquí hay un registro en Tabla1 que tiene igual el campo en Tabla2"... y lo muestra
Luego.
"Aquí hay un registro en Tabla2 que tiene igual el campo en Tabla1"... y también lo muestra.. siendo igual al anterior

Por cierto, creo que te dí mal el último query de DISTINCT.. resulta que vá después del SELECT..
SELECT DISTINCT * FROM a, b
WHERE a.rut=b.rut AND a.alta='no'
ORDER BY conta ASC LIMIT 0 , 30

Este query sería como un "Parche" para que no muestre duplicados

Saludos

Giorgio
__________________
EmpresasEnRed.com
Diseño Web
  #7 (permalink)  
Antiguo 07/01/2004, 13:27
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Y has probado a utilizar el INNER JOIN

SELECT a. * , b.rut, b.fono
FROM avisoeco AS a INNER JOIN usuarios_avisos AS b
ON a.rut = b.rut
WHERE a.alta = 'no'
ORDER BY conta ASC LIMIT 0 , 30
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 12:28.