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

select complejo

Estas en el tema de select complejo en el foro de Mysql en Foros del Web. hola, tenía este query: Código PHP: SELECT  *  FROM bg_posts ,  bg_plataformas ,  bg_categories INNER JOIN  ( SELECT MAX ( id ) AS  id FROM bg_posts GROUP BY post_title )  ids ON bg_posts . id  =  ids ...
  #1 (permalink)  
Antiguo 29/07/2009, 14:27
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
select complejo

hola,

tenía este query:

Código PHP:
SELECT FROM bg_postsbg_plataformasbg_categories INNER JOIN (SELECT MAX(id) AS id FROM bg_posts GROUP BY post_titleids ON bg_posts.id ids.id WHERE plataforma_code=post_plataforma AND post_category=category_code AND post_publicado=1 ORDER BY post_date DESC LIMIT 100 
y me funcionaba sin problemas. Comentar que todo el rollo del INNE JOIN es simplemente para que el GROUP lo haga descendente, porque sino, que yo sepa no hay otra forma de hacérselo saber al MySQL y siempre lo hace ascendente.

Pues bien, el caso es que he cambiado de servidor y no sé si es que tiene otra versión distinta de MySQL, pero el caso es que ahora me da este error:

no se encuentra bg_posts.id. He probado poner un alias: SELECT * FROM bg_posts AS t1 y luego lo llamo como t1.id, pero pasa lo mismo.

¿Alguna idea?

gracias
  #2 (permalink)  
Antiguo 29/07/2009, 16:05
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: select complejo

Cita:
Pues bien, el caso es que he cambiado de servidor y no sé si es que tiene otra versión distinta de MySQL, pero el caso es que ahora me da este error:
Según el error, dice que la columna no existe.
Si haces un select *from bg_posts en la salida te aparece una columna llamada id?

haz una descripción de la tabla bg_posts. desc bg_posts; y asegurate que tengas dicha columna.

Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 29/07/2009, 18:31
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: select complejo

hola huesos52, muchas gracias por responder,

efectivamente el campo id existe, ya que es el campo id que viene por defecto y es el índece de la tabla.

Detallo el error ya que antes no lo tenía en pantalla:

Código PHP:
[Unknown column 'bg_posts.id' in 'on clause'] 
dice columna desconocida bg_post.id en la claúsula ON

Recalcar que como digo tiene que ser un error relacionado con la versión de MySQL, que sin duda ahora trabajo con una más moderna, puesto que en el anterior servidor me rulaba sin problemas.

Muchas gracias de nuevo
  #4 (permalink)  
Antiguo 29/07/2009, 18:34
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: select complejo

Cita:
Si haces un select *from bg_posts en la salida te aparece una columna llamada id?
ya hiciste esto?
Que te sale?


No me convence que sea la versión de mysql. Laa estructura de la consulta elementos viejos en su contenido.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 29/07/2009, 18:41
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: select complejo

si, por supuesto, de hecho lo utilizo en varias rutias del la web, osea llamo a registro de la tabla bg_posts por su id

He probado a cambiar a ID en mayúsculas, puesto que en la tabla lo tengo definido de esa forma, pero me da el mismo error.
  #6 (permalink)  
Antiguo 29/07/2009, 18:48
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: select complejo

La estructura de la consulta la veo un poco rara.
Separas 3 tablas con coma y luego aplicas inner join con una tabla resultante.
en la clausula ON solo comparas el bg_posts.id con el ids.id y el resto en el where.

Cuentame estos campos
Cita:
WHERE plataforma_code=post_plataforma AND post_category=category_code AND post_publicado=1 ORDER BY post_date DESC LIMIT 100
A que tablas pertenecen?
Con esta info armamos una consulta que haga lo mismo sin errores de sintaxis.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 29/07/2009, 18:54
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: select complejo

post_category, post_publicado y post_date a bg_posts
category_code a bg_categories

he probado a eliminar el ON bg_posts.id = ids.id, con lo cual pierde sentido todo el query (de hecho se queda en un bucle que satura el servidor), pero verifica que de esa forma no da ningún error el campo id que utilizamos en SELECT MAX(id) AS id FROM bg_posts
  #8 (permalink)  
Antiguo 29/07/2009, 18:55
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: select complejo

en realidad lo único que busca este query es los últimos 100 registros de bg_posts agrupados por el título del mismo (lo cual implica ordenados de forma descendente cosa que no hace el puñetero GROUP por defecto) cumpliendo los WHERE que indico.
  #9 (permalink)  
Antiguo 29/07/2009, 18:59
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: select complejo

te recomiendo hagas todas las relaciones de las tablas haciendo uso de inner join
Por ejemplo

Código sql:
Ver original
  1. SELECT * FROM bg_posts
  2. INNER JOIN
  3. (SELECT MAX(id) AS id FROM bg_posts GROUP BY post_title) ids
  4. ON bg_posts.id = ids.id
  5. INNER JOIN
  6. bg_plataformas
  7. ON cave=clave
  8. INNER JOIN
  9. bg_categories
  10. ON clave=clave
  11. WHERE post_publicado=1 ORDER BY post_date DESC LIMIT 100
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #10 (permalink)  
Antiguo 29/07/2009, 19:08
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: select complejo

pues en principio te diría que funciona de perlas lo que me has pasado. Eso sí, el query es un poco más lento de lo que era antes, pero lo importante es que funciona en este servidor !!!

Muchas gracias por tu ayuda. Ahora tengo que averigüar porque feedburner no me incluye las imágenes en su feed, pero eso otra historia.

Desde luego el query que me has pasado hace lo que tiene que hacer.

Un saludo

Última edición por dblanco; 29/07/2009 a las 19:13
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 23:37.