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

repetir id de columnas en cada registro asociado

Estas en el tema de repetir id de columnas en cada registro asociado en el foro de Mysql en Foros del Web. Hola, estoy realizando un scirpt multilenguaje (en PHP) algo pareceido a polylang de woordpress, hasta ahora todo bien solo que necesito que en la tabla ...
  #1 (permalink)  
Antiguo 05/07/2018, 15:33
 
Fecha de Ingreso: octubre-2011
Mensajes: 128
Antigüedad: 7 años, 1 mes
Puntos: 4
repetir id de columnas en cada registro asociado

Hola, estoy realizando un scirpt multilenguaje (en PHP) algo pareceido a polylang de woordpress, hasta ahora todo bien solo que necesito que en la tabla donde muestro los registros de los contenidos publicados me muestre en cada registro asociado los mismos id en sus columnas, digamos tengo esto;

es = español
en= Ingles
pt = Portugues
+ = no ha sido creado aún.

vista tabla con registros ya ingresados, donde quiero que se vea de esa manera.

id - titulo - es - en - pt
7 - Portugues - + - 6 - 7
6 - Ingles - + - 6 - 7
5 - Adeus - 3 - 4 - 5
4 - Bye - 3 - 4 - 5
3 - Adios - 3 - 4 - 5
2 - Hello - 1 - 2 - +
1 - Hola - 1 - 2 - +

tablas:
post:
Código MySQL:
Ver original
  1. CREATE TABLE `posts` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `id_categoria` int(11) NOT NULL,
  4.   `imagen` varchar(45) DEFAULT NULL,
  5.   `estado` int(11) DEFAULT NULL,
  6.   `fecha_registro` datetime DEFAULT NULL,
  7.   `fecha_edicion` datetime DEFAULT NULL,
  8.   `id_usuario` int(11) NOT NULL,
  9.   `id_sibling` int(11) DEFAULT NULL,
  10.   `post_estado` int(11) DEFAULT NULL,
  11.   PRIMARY KEY (`id`)

post_langs:
Código MySQL:
Ver original
  1. CREATE TABLE `post_langs` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `id_post` int(11) DEFAULT NULL,
  4.   `id_lang` int(11) DEFAULT NULL,
  5.   `titulo` varchar(255) DEFAULT NULL,
  6.   `contenido` text,
  7.   `slug` varchar(255) DEFAULT NULL,
  8.   PRIMARY KEY (`id`)

tabla langs:
Código MySQL:
Ver original
  1. CREATE TABLE `langs` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `codigo` varchar(2) DEFAULT NULL,
  4.   `nombre` varchar(20) DEFAULT NULL,
  5.   PRIMARY KEY (`id`)
  #2 (permalink)  
Antiguo 05/07/2018, 16:24
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.322
Antigüedad: 12 años, 3 meses
Puntos: 761
Respuesta: repetir id de columnas en cada registro asociado

y cual es el query que llevas hasta el momento?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 05/07/2018, 16:58
 
Fecha de Ingreso: octubre-2011
Mensajes: 128
Antigüedad: 7 años, 1 mes
Puntos: 4
Respuesta: repetir id de columnas en cada registro asociado

Hola gracis por responder, uso 2 consultas

1er
Código MySQL:
Ver original
  1. SELECT P.id, P.imagen, P.fecha_registro, P.post_estado, P.id_sibling, PL.titulo, PL.id_lang, C.nombre, U.usuario
  2.         FROM usuarios U
  3.         INNER JOIN posts P ON U.id = P.id_usuario
  4.         INNER JOIN post_langs PL ON P.id = PL.id_post
  5.         INNER JOIN categorias_blog C ON C.id = P.id_categoria
  6.         INNER JOIN langs L ON L.id = PL.id_lang
  7.         ORDER BY PL.id DESC

2da:

Código MySQL:
Ver original
  1. SELECT L.id, L.codigo, PL.id_lang, PL.id_post, P.post_estado FROM langs L
  2.             INNER JOIN post_langs PL ON L.id = PL.id_lang
  3.             INNER JOIN posts P ON P.id = PL.id_post
  4.             GROUP BY L.id

y en la vista uso 2 foreach para mostrarlos

Código PHP:
Ver original
  1. {foreach item=datos from=$blog}
  2.                     <tr>
  3.                         <td>{$datos.titulo}</td>
  4.                         {foreach item=lang from=$langs}
  5.                         <td>
  6.                         </td>
  7.                     </tr>
  8.                     {/foreach}

de esa manera me armada la tabla correctamente, pero en las columnas de los idiomas no se como mostralos como lo describi arriba
  #4 (permalink)  
Antiguo 06/07/2018, 11:33
 
Fecha de Ingreso: octubre-2011
Mensajes: 128
Antigüedad: 7 años, 1 mes
Puntos: 4
Respuesta: repetir id de columnas en cada registro asociado

Hola, com podria hacer la query para decirle que uno o mas idiomas relacionado a uno ya existente aun no esta registrado en la BD, ejemplo cree un post en idioma español, pero no en el ingles ni en portugues, como puedo hacer esa consulta. ya que encesito mostrar los botones de agregar o editar por cada idioma.

+) boton agregar
E:i) boton editar
i) id de registro

id - es - en - pt
2 - E:1 - E:2 - +
1 - E:1 - E:2 - +

este es un ejemplo de que estan el idioma español e ingles que estan relacionados por el id_sibling ya registrados en la BD, a la espera del idioma portugues, espeor haberme dejado entender.

Última edición por stevens82; 06/07/2018 a las 11:38
  #5 (permalink)  
Antiguo 09/07/2018, 14:12
 
Fecha de Ingreso: octubre-2011
Mensajes: 128
Antigüedad: 7 años, 1 mes
Puntos: 4
Respuesta: repetir id de columnas en cada registro asociado

hola aun sigo intentando, alguien me podria decir como saber si un id tiene o no sus id_sibling completos (id_sibling = hermanos), digamos en el ejemplo del primer comentario el id:1 su hermano es el 2 como saber si le falta el 3 (ya que son 3 idiomas creados) y el id:6 no tiene ningun id_sibling, esto para con unas condiciones poder llenar las tabla, un check para el registro creado de un primer idioma un lapiz para los hermanos creados a partir del primer idioma creado y un más (+) para el idioma o idiomas hermanos que faltan crear, espero haberme dejado entender
  #6 (permalink)  
Antiguo 09/07/2018, 15:43
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.322
Antigüedad: 12 años, 3 meses
Puntos: 761
Respuesta: repetir id de columnas en cada registro asociado

Ocuparias hacer un cross join con tus datos y de ahi acomodar la informacion para obtener lo que necesitas, dale una revisada a este link donde se explica algo parecido a lo que necesitas:

http://www.mysqltutorial.org/mysql-cross-join/
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 09/07/2018, 17:31
 
Fecha de Ingreso: octubre-2011
Mensajes: 128
Antigüedad: 7 años, 1 mes
Puntos: 4
Respuesta: repetir id de columnas en cada registro asociado

Hola Libras, gracias por responder, la verdad me arma un producto carteasiano si uso el corss join, digamos en el ejemplo solo me deeria mostrar 9 registros si y solo si los 3 registros que tienes su 2 hijos estan tambien con registros

registro 1 iniciado en idioma español tiene dos hijos uno ingles y otro portugues, pero en este caso solo re registro el ingles por eso solo debe de mostrar 2 registros, con el cross join me muestra 18 registros, repitienodme 3 veces por cada registro, mi tabla lo armaba dependiendo de la cantidad de idiomas que existen de esta manera

Cita:
Off topic: Código de programación no permitido en foros de BBDD. Leer las reglas del subforo


como se ve en la imagen me arma la tabla y he podido mostrar los id q si estan registrados con un check, ahora necesito mostrar los otros botones, en el id = 1 en la columna del idioma "en" necesito mostrar un boton con un icono de lapiz siendo su id = 2 y que me lleve a su edicion, y en la columna del idioma "pt" mostrar el boton con el icono + ya que aun no esta registrado ese idioma relacionado al registro 1 y 2, que me lleve aun formulario vacio para poder agregarlo, ojala me deje entender.

Última edición por gnzsoloyo; 10/07/2018 a las 13:17
  #8 (permalink)  
Antiguo 10/07/2018, 08:36
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.322
Antigüedad: 12 años, 3 meses
Puntos: 761
Respuesta: repetir id de columnas en cada registro asociado

Claro te hiba a generar un producto cartesiano, es la unica forma de obtener lo que necesitas, tienes que hacer un producto cartesiano con los valores de idiomas contra los valores de usuario, y acomodar el query para que te muestre los que tiene con valor y lso que no tiene con un NULL, revisa bien la informacion que te mande, la solucion no nada mas era usar cross join, eso va a ser la base
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 10/07/2018, 23:01
 
Fecha de Ingreso: octubre-2011
Mensajes: 128
Antigüedad: 7 años, 1 mes
Puntos: 4
Respuesta: repetir id de columnas en cada registro asociado

Hola estuve intentanto realizar el cross join y me muestra 18 registros osea 6 de los post y 3 de los idiomas que tengo, ahora no se como podria acomodarlos para que se vea como en la imagen de arriba, necesito una ayuda al respecto, esto es lo que me muestra esa consulta.

  #10 (permalink)  
Antiguo 11/07/2018, 19:54
 
Fecha de Ingreso: octubre-2011
Mensajes: 128
Antigüedad: 7 años, 1 mes
Puntos: 4
Respuesta: repetir id de columnas en cada registro asociado

Hola nuevamente aca molestando estuve intentando con esta consulta:

Código MySQL:
Ver original
  1. SELECT parent.id, CONCAT_WS(',',  parent.id, group_concat(DISTINCT child.id)) AS childs, PL.id_lang
  2. FROM posts parent
  3. LEFT JOIN posts child ON child.id_sibling = parent.id
  4. INNER JOIN post_langs PL ON parent.id = PL.id_post
  5. INNER JOIN langs L ON L.id = PL.id_lang



Lo que necesito es que en el id:2 me muestre 1,2 como en el id:1 ya que tienen relación, en el id:4 y id:5 me muestre 3,4,5 como en el id:3 ya que esos 3 registros tiene relación, como podria hacer eso?



La zona horaria es GMT -6. Ahora son las 22:08.