Cita:
Iniciado por gnzsoloyo La solución que veo más práctica es por doble vía: Una consulta que devuelva sólo el ID principal con dos columnas conteniendo la lista de videos y la lista de fotos relacionadas. Algo como:
Código SQL:
Ver originalSELECT
P.id Galeria,
IFNULL(GROUP_CONCAT(V.codigo_video), '') Videos,
IFNULL(GROUP_CONCAT(F.nombre_foto), '') Fotos
FROM principal P
LEFT JOIN videos V ON P.id = V.id_principal
LEFT JOIN fotos F ON P.id = F.id_principal
GROUP BY P.id
Luego, en la programación armas la segunda y tercera columna en función a la cantidad de items que te regrese la consulta.
Eso, en la práctica, significa no hacer esa query, y hacer sólo la segunda y la tercera.
Lo que está aquí confundiendo es la presunción que hace el OP de que necesita 1 sola query, para tener la misma paginación.
Código SQL:
Ver originalSELECT * FROM (SELECT *
FROM principal P
LEFT JOIN videos V ON P.id = V.id_principal
LIMIT <start>,<nrows>) videos WHERE V.id_principal IS NOT NULL;
y
Código SQL:
Ver originalSELECT * FROM (SELECT *
FROM principal P
LEFT JOIN fotos F ON P.id = F.id_principal
LIMIT <start>,<nrows>) fotos WHERE F.id_principal IS NOT NULL;
Entiendo que el OP está usando un mapeado de herencia en varias tablas, por lo que 1 id en principal, corresponde a una foto, o a un video.
Lo que no entiendo es a qué llama "paginar" 2 cosas distintas a la vez.Si muestras 10 resultados, igual todos son videos, o todos son fotos, con lo que una columna queda vacía...Supongo que eso te da igual..