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

SELECT varias tablas misma columna

Estas en el tema de SELECT varias tablas misma columna en el foro de Mysql en Foros del Web. Hola, necesito hacer una consulta con el fin de saber si hay alguna imagen con el mismo nombre. Hice lo siguiente: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: ...
  #1 (permalink)  
Antiguo 25/07/2012, 15:26
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 13 años, 11 meses
Puntos: 2
SELECT varias tablas misma columna

Hola, necesito hacer una consulta con el fin de saber si hay alguna imagen con el mismo nombre.

Hice lo siguiente:


Código PHP:
Ver original
  1. <?php
  2. include ("../../configuracion/conexion-usuario.php");
  3. include ("../../_php/conexion.php");
  4.  
  5. $id=$_GET["id"];
  6. $imagen=$_GET["imagen"];
  7.  
  8.  
  9. $orden="SELECT g.imagen, p.imagen, gi.imagen, i.imagen, fi.imagen FROM imagenesgaleria g INNER JOIN fondopagina p INNER JOIN galeriainicio gi INNER JOIN imagenes i INNER JOIN[B] fondoinicio[/B] fi WHERE g.imagen LIKE '$imagen' OR p.imagen LIKE '$imagen' OR gi.imagen LIKE '$imagen' OR i.imagen LIKE '$imagen' OR fi.imagen LIKE '$imagen'";
  10.  
  11. $rs=mysql_query($orden, $conn) or die (mysql_error());
  12. $fila=mysql_fetch_array($rs);  
  13.  
  14.  
  15. if (mysql_num_rows($rs)>0){
  16.  
  17. echo "ya hay una imagen con este nombre";
  18. }else{
  19. echo "no hay imágenes con ese nombre";
  20. }

Parece funcionar bien, pero la tabla fondoinicio no tiene ninguna fila por lo que me da un resultado NULO, a pesar de que hay varias imágenes con ese nombre.

EL resultado fina me da no hay imágenes con ese nombre.
  #2 (permalink)  
Antiguo 26/07/2012, 01:26
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: SELECT varias tablas misma columna

Código MySQL:
Ver original
  1. SELECT sbc.imagen,sbc.tabla
  2.    (SELECT g.imagen as imagen, 'g' as tabla
  3.      FROM imagenesgaleria g
  4.    UNION ALL
  5.    SELECT p.imagen as imagen, 'p' as tabla
  6.      FROM fondopagina p
  7.    UNION ALL
  8.    ....todas la tablas...) as sbc
  9. WHERE sbc.imagen='$imagen';

Usa esta, puedes cambiar el alias por el nombre real de la tabla....

LIKE '$imagen' sin usar % comodines no tinen sentido y es mucho mas ineficiente que ='$imagen' ....

Si $imagen es el nombre del fichero y los ficheros de las imagenes estan todos en el mismo path investiga el uso de la funcion php scandir
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 26/07/2012, 11:20
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: SELECT varias tablas misma columna

Me da el siguiente error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') as sbc WHERE sbc.imagen='img/puentemaua2.jpg'' at line 17

lo que hice:

Código PHP:
Ver original
  1. $orden="SELECT sbc.imagen,sbc.tabla FROM (SELECT g.imagen as imagen, 'g' as tabla FROM imagenesgaleria g
  2.   UNION ALL
  3.  
  4.   SELECT p.imagen as imagen, 'p' as tabla
  5.     FROM fondopagina p
  6.   UNION ALL
  7.   SELECT gi.imagen as imagen, 'gi' as tabla
  8.     FROM galeriainicio p
  9.   UNION ALL
  10.   SELECT i.imagen as imagen, 'i' as tabla
  11.     FROM imagenes i
  12.   UNION ALL
  13.   SELECT fi.imagen as imagen, 'fi' as tabla
  14.     FROM fondoinicio fi
  15.   UNION ALL
  16.  
  17.   ) as sbc
  18. WHERE sbc.imagen='$imagen'";


Gracias por la respuesta!
  #4 (permalink)  
Antiguo 26/07/2012, 11:36
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: SELECT varias tablas misma columna

Hola sebacomas:

Hay dos errores en tu consulta... uno Copiar y pegar el código que te puso el compañero quimfv, y el otro no haber revisado la documentación del UNION para ver donde está el problema .


Código:
...
  SELECT fi.imagen as imagen, 'fi' as tabla
   FROM fondoinicio fi
  UNION ALL
 ) as sbc
WHERE sbc.imagen='$imagen'";
Elimina el último UNION ALL, está de más...

Saludos
Leo.
  #5 (permalink)  
Antiguo 26/07/2012, 12:34
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: SELECT varias tablas misma columna

GRACIAS con ese cambio me funcionó, ahora voy a tener que estudiarlo bien, ya que no lo tengo muy claro todavía.
Saludos!

Etiquetas: columna, join, php, select, sql, 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 10:46.