Comunidad de diseño web y desarrollo en internet online

consultas duplicadas al unir tablas

Citar            
MensajeEscrito el 14 Ago 2015 12:15 am
buenas amigos tengo una consulta:
como puedo combinar 3 bases de datos sin que los resultados de la consulta salgan por triplicado?
engo 3 bases de datos distintas
1-planes que contiene los datos de los clientes (nombre apellido etc)
2-cobrotmp que contiene algunos datos de cuotas (cantidad de cuotas etc)
3-pagos que contiene datos de numeros de recibos de las cuotas (numero de recibo de cada cuota etc)

el tema es que deseo hacer laculnsulta siguiente:
si yo deseo saber si un cliente con una cuota y un unero de recibo existe hago la siguiente consulta

Código PHP :

$sql = "SELECT plan.nombre, cobrotmp.cuota, pagos.numRecibo FROM plan JOIN cobrotmp ON plan.nsol = cobro.nsol JOIN cobros ON plan.nsol = cobros.nsol WHERE plan.nombre ='juan' AND cobrotmp.cuota ='6' AND pagos.numRecibo ='65' ";
if($rs = $mysqli->query($sql)){
 while($row = $rs->fetch_assoc()){
echo $row['nombre'].$row['cuota'].$row['numRecibo'];
}
}


el resultado sera
juan 6 65
juan 6 65
juan 6 65
como puedo hacer para que los resultados no se tripliquen? dado que aveses la consulta es bastante compleja muchas gracias

Por JaVIChO

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Ago 2015 12:28 pm
¿Por qué los JOIN?, ¿tienes registros que pueden no estar en alguna de las otras tablas?.

Sin conocer la estructura de tus tablas ni las relaciones que has establecido, me parece que lo que te falta es hacer un GROUP BY por el campo índice que relaciona las tres tablas.

Por DriverOp

Claber

2510 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Ago 2015 12:38 pm
Hola, si son 3 tablas que comparten algunos registros y otros registros no, lamentablemente es un diseño eredado que intento mejorar de a poco. en estas 3 tablas existe informacino redundante y tambien informacion que no esta presente en las otras por ejemplo si yo quisiera saber cuantas personas de lugar en particular se inscribieron en la empresa en sierto mes necesito consultar la las 3 tablas porque una de ellas tiene la fecha de inscripcion otra tiene las regiones y otra los nombres de los clientes pero las tres tablas tienen el numero de registro, me explico? pero cuando hago esta consulta cada cliente sale triplicado en el while.
gracias por la ayuda
el join es porke no conosco una forma mejor de unir las tablas para esta consulta, existe una mejor?

Por JaVIChO

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Ago 2015 12:09 pm
Sí, poniendo una condición o las que sean necesarias, en el WHERE. ¿Qué pasó con GROUP BY?.

Por DriverOp

Claber

2510 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Ago 2015 12:19 pm
pues no se como usar el group by en este caso podrias indicarme? perdon por mi falta de conocimiento, gracias por la ayuda

Por JaVIChO

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Ago 2015 07:09 pm
Pues usa la cláusula GROUP BY por el campo que tengan en común las tres tablas.

Mira, sin ver la estructura de la base de datos solamente estoy adivinando según mi experiencia, no puedo ser más específico con la información que tengo.

Por DriverOp

Claber

2510 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.