Ver Mensaje Individual
  #15 (permalink)  
Antiguo 20/01/2013, 13:49
Avatar de dashtrash
dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 10 meses
Puntos: 270
Respuesta: Mostrar resultados mysql en 2 columnas distintas

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si te fijas con mas cuidado, yo ya había planteado esa sentencia como una posibilidad, pero puse la advertencia de que esa sintaxis producirá un producto cartesiano.
...en una relación 1 a 1, lo cual produce un producto cartesiano de cardinalidad igual a 1.
De hecho, si eso generara un producto cartesiano, no siendo la relación 1 a 1, e hicieras un GROUP_BY, exactamente, me puedes decir cómo haces la paginación, si a priori no sabes si después de agrupar vas a tener 1, 2,8 o 10 resultados?

Cita:
Inevitable para mi, porque trabajo profesionalmente como DBA. Tengo ciertos hábitos de codificación adquiridos.
Yo trabajo profesionalmente desde hace muchos años como jefe de programción y optimizando código de otros programadores.Así que, tengo "ligera idea" de qué es un DBA, un "producto cartesiano", y las "posibilidades de una base de datos".
Tu query, y cualquiera basada en LEFT_JOIN sobre las dos tablas, están dejando en manos del programador el reorganizar qué son vídeos y qué son fotos.
Tanto si lo dejas como null, o como '', lo que estás cambiando es el test que va a tener que hacer el programador (y ni eso....lo habitual es un test ==, no ===), así que da lo mismo.

Cita:
La función GROUP_CONCAT() tiene por objetivo evitar las repeticiones de la primera columna
, y recolectar todos los IDs de las otras dos relacionados al mismo ID, especialmente en el caso de que no haya una relación 1:1 entre fotos y videos (que es lo que el forista dice, precisamente).
Dejando en manos del programador que tenga que hacer cosas como explodes() sobre el campo...Código precioso.
Aparte, en qué punto dice el OP que los id's son compartidos entre vídeos y fotos? Qué sentido tiene eso? Las relaciones de video y foto con principal, son 1:1.
Repito.Si no fueran 1:1, dime cómo paginas con un GROUP_BY.

Cita:
COmo se puede apreciar, cada tabla tiene su propio campo "ID", por lo que un "SELECT *" hecho sobre dos tablas devolverá ambas columnas con ese mismo nombre.

Tendrás en algun momento problemas con esos dos campos si usases esos campos como condición.
Ya..y si pusiera un nombre de campo no existente, también tendría problemas...Pero es que no he puesto eso.Si propones un caso hipotético para "advertirme" de que habría problemas..Siento decirte que eso lo aprendí hace como 13 años...
No pienses que todos los que vienen al foro no saben distinguir los campos seleccionados de las condiciones..O que llevan en esto dos días..Estaría muy bien...

Cita:
TE concedo que me distraje un momento con los nombres, y que si haces exactamente con las tablas descritas una consulta a dos tablas, no se producirá problema de ambigüedad de columnas. Pero los tendrás luego al leer el resultado en PHP,
Oh, gracias por la concesión...Pero vuelves a equivocarte.
Si quisiera saber a qué campo pertence cada columna, con mysql_field_table, y accediendo a las columnas por índice, en caso de que lo necesitara, tendría a qué tabla pertence cada columna.
No hay ambiguedad ninguna.