Foros del Web » Programando para Internet » PHP »

Select de dos tablas con campos iguales.

Estas en el tema de Select de dos tablas con campos iguales. en el foro de PHP en Foros del Web. Hola, tengo que hacer un consulta a la bd de dos tablas en las cuales hay campos con el mismo nombre. Es un autocompletado en ...
  #1 (permalink)  
Antiguo 15/12/2012, 06:18
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Select de dos tablas con campos iguales.

Hola, tengo que hacer un consulta a la bd de dos tablas en las cuales hay campos con el mismo nombre. Es un autocompletado en un input.
He intentado esto pero no me sale:
Código MySQL:
Ver original
  1. select U.nombre, U.apellidos, U.telefono, U.nif, U.telefono2, U.telefono3, A.nombre, A.apellidos, A.telefono, A.nif, A.telefono2, A.telefono3
  2. from usuarios U, avisoswed A;

Gracias y un saludo

Última edición por gnzsoloyo; 15/12/2012 a las 06:59 Razón: No se permite código de programación en los foros de bases de datos.
  #2 (permalink)  
Antiguo 15/12/2012, 06:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Select de dos tablas con campos iguales.

En principio, no hay errores en la consulta tal y como te la he limpiado, aunque se la ve bastante incompleta.
¿Podrías ser más específico?
¿Te sale algún error o algún mensaje?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 15/12/2012, 12:34
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Select de dos tablas con campos iguales.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En principio, no hay errores en la consulta tal y como te la he limpiado, aunque se la ve bastante incompleta.
¿Podrías ser más específico?
¿Te sale algún error o algún mensaje?
Gracias por contestar. No me sale nigún error, simplemente no sale nada.
Te pongo el cod:

Código PHP:
<?php
include("conexion_autocompletado.php");//se incluyen los datos para realizar la conexion a su base de datos
$con "(select U.nombre,U.apellidos,U.telefono,U.nif,U.telefono2,U.telefono3,A.nombre,A.apellidos,A.telefono,A.nif,A.telefono2,A.telefono3 from usuarios U,avisoswed A)";
$query mysql_query($con);
?>
<script>
    $(function() {
        
        <?php
        
        
while($rowmysql_fetch_array($query)) {//se reciben los valores y se almacenan en un arreglo
        
      
$elementos[]= '"'.utf8_encode($row['apellidos']).' , '.utf8_encode($row['nombre']).'"';
      
$elementos1[]= '"'.$row['telefono'].'"';
      
$elementos2[]= '"'.$row['nif'].'"';
      
$elementos3[]= '"'.$row['telefono2'].'"';
      
$elementos4[]= '"'.$row['telefono3'].'"';
      
}
$arregloimplode(", "$elementos);
$arreglo1implode(", "$elementos1);
$arreglo2implode(", "$elementos2);
$arreglo3implode(", "$elementos3);
$arreglo4implode(", "$elementos4);
//junta los valores del array en una sola cadena de texto

        
?>    
        
        var availableTags=new Array(<?php echo $arreglo?>);
        var availableTags1=new Array(<?php echo $arreglo1?>);//imprime el arreglo dentro de un array de javascript
        var availableTags2=new Array(<?php echo $arreglo2?>);
        var availableTags3=new Array(<?php echo $arreglo3?>);
        var availableTags4=new Array(<?php echo $arreglo4?>);
                
        $( "#apellidos").autocomplete({
            minLength: 4,
            source: availableTags
        });
        $( "#telefono").autocomplete({
            minLength: 4,
            source: availableTags1
        
        });
        $( "#nif").autocomplete({
            minLength: 4,
            source: availableTags2
        
        });
        $( "#telefono2").autocomplete({
            minLength: 4,
            source: availableTags3
        
        });
        $( "#telefono3").autocomplete({
            minLength: 4,
            source: availableTags4
        
        });
    });
    </script>
Un saludo
  #4 (permalink)  
Antiguo 15/12/2012, 14:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Select de dos tablas con campos iguales.

Movido a Foro de PHP para continuar el tema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 15/12/2012, 15:31
 
Fecha de Ingreso: diciembre-2012
Mensajes: 24
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Select de dos tablas con campos iguales.

Hola, podrías agregarle un alias a cada campo, y cuando obtienes el valor de $row, colocarle el nombre del alias, es decir:
Código:
SELECT U.nombre AS 'NombreUsuario', U.apellidos AS 'ApellidosUsuario', U.telefono AS 'TelefonoUsuario', U.nif AS 'NifUsuario', U.telefono2 AS 'Telefono2Usuario', U.telefono3 AS ''Telefono3Usuario', A.nombre AS 'NombreAviso', A.apellidos AS 'ApellidosAviso', A.telefono AS 'TelefonoAviso', A.nif AS 'NifAviso', A.telefono2 AS 'Telefono2Aviso', A.telefono3 AS 'Telefono3Aviso' 
FROM usuarios U, avisoswed A;
Y al obtener el valor de $row no le colocas el nombre del campo, si no el alias que le colocaste al campo!

Espero que te sirva
  #6 (permalink)  
Antiguo 15/12/2012, 19:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Select de dos tablas con campos iguales.

El alias no le va a sacar o poner nada. Para evitar conflictos en el array son necesarios si y sólo si en ambas tablas se presentan campos con el mismo nombre, y no se los está discriminando en el SELECT al usar "*".
Pero por lo que dice el forista el problema es que no devuelve nada.
Técnicamente hablando, la consulta es funcional, aunque el JOIN implícito no tiene determinada la relación entre ambas tablas y por tanto MySQL intentará matchear campos que tengan el mismo nombre en ambas tablas. En este caso, si no hay valores que pueda relacionar, la consulta podría devolver un producto cartesiano, pero difícilmente no devuelva nada.
La única posibilidad de que no devuelva datos, en definitiva, es que no pueda relacionar valores entre ambas tablas, si los campos del mismo nombre son incompatibles, o no tienen datos relacionables.

He pasado el post para acá para que verifiquen si hay defectos en el PHP, que es el código que posteó en el Foro de MySQL, (en los foros de BBDD no se tratan esos temas). Si consideran que el PHP está bien, GatorV, jpinedo o masterpuppet pueden devolver el post a MySQL, donde volveremos a revisarlo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 15/12/2012 a las 19:39
  #7 (permalink)  
Antiguo 16/12/2012, 05:11
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Select de dos tablas con campos iguales.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
El alias no le va a sacar o poner nada. Para evitar conflictos en el array son necesarios si y sólo si en ambas tablas se presentan campos con el mismo nombre, y no se los está discriminando en el SELECT al usar "*".
Pero por lo que dice el forista el problema es que no devuelve nada.
Técnicamente hablando, la consulta es funcional, aunque el JOIN implícito no tiene determinada la relación entre ambas tablas y por tanto MySQL intentará matchear campos que tengan el mismo nombre en ambas tablas. En este caso, si no hay valores que pueda relacionar, la consulta podría devolver un producto cartesiano, pero difícilmente no devuelva nada.
La única posibilidad de que no devuelva datos, en definitiva, es que no pueda relacionar valores entre ambas tablas, si los campos del mismo nombre son incompatibles, o no tienen datos relacionables.

He pasado el post para acá para que verifiquen si hay defectos en el PHP, que es el código que posteó en el Foro de MySQL, (en los foros de BBDD no se tratan esos temas). Si consideran que el PHP está bien, GatorV, jpinedo o masterpuppet pueden devolver el post a MySQL, donde volveremos a revisarlo.
Gracias a los dos. Pienso que el problema debe de estar en el select puesto que este mismo código y con sólo la tabla usuarios funciona perfectamente.
De todas formas probaré con los alias y comentamos.
Un saludo
  #8 (permalink)  
Antiguo 16/12/2012, 05:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Select de dos tablas con campos iguales.

¿No será que la consulta que buscabas era en realidad así?:
Código MySQL:
Ver original
  1. SELECT nombre, apellidos, telefono, nif, telefono2, telefono3,
  2. FROM usuarios
  3. SELECT nombre, apellidos, telefono, nif, telefono2, telefono3
  4. FROM avisoswed;

Porque como dije antes, para devolverte datos haciendo el JOIN implícitos (la coma), sólo sucedería si todos los campos en ambas tablas tienen los mismos valores, y esto implicaría que son datos repetidos entre ambas.
En cambio, si quieres que te devuelva todos los de ambas... eso es un UNION, no un JOIN.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 16/12/2012, 13:59
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Select de dos tablas con campos iguales.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿No será que la consulta que buscabas era en realidad así?:
Código MySQL:
Ver original
  1. SELECT nombre, apellidos, telefono, nif, telefono2, telefono3,
  2. FROM usuarios
  3. SELECT nombre, apellidos, telefono, nif, telefono2, telefono3
  4. FROM avisoswed;

Porque como dije antes, para devolverte datos haciendo el JOIN implícitos (la coma), sólo sucedería si todos los campos en ambas tablas tienen los mismos valores, y esto implicaría que son datos repetidos entre ambas.
En cambio, si quieres que te devuelva todos los de ambas... eso es un UNION, no un JOIN.
Ok, esta es la SOLUCIÓN.
SALUDOS

Etiquetas: campos, 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 22:34.