elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  ¿Cómo evito mostrar columnas repetidas?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo evito mostrar columnas repetidas?  (Leído 5,756 veces)
DanteInfernum

Desconectado Desconectado

Mensajes: 60


Ver Perfil
¿Cómo evito mostrar columnas repetidas?
« en: 15 Septiembre 2013, 20:30 pm »

El asunto es así:

Tengo 2 tablas, Empleados y Trabajan. La columna IdEmp es clave primaria de Empleados y a su vez clave foránea de Trabajan. Quiero componer las dos tablas mediante un inner join y mostrar todos los datos resultantes.

Tengo la siguiente consulta en SQL:

Código:
select *
from empleados inner join trabajan
on empleados.idemp = trabajan.idemp

La cuestión es que IdEmp pertenece a las 2 tablas, por lo que al mostrar todos los datos esta columna se repite. Me gustaría saber qué puedo hacer para evitar esto (sin tener que seleccionar las columnas que quiero mostrar una por una).


« Última modificación: 15 Septiembre 2013, 21:19 pm por DanteInfernum » En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: ¿Cómo evito mostrar columnas repetidas?
« Respuesta #1 en: 16 Septiembre 2013, 08:11 am »

GROUP BY? Porque pertenece a las 2 tablas, no entiendo... Podrias mostrar el resultado a ver como se ven los datos?


En línea

Te vendería mi talento por poder dormir tranquilo.
DanteInfernum

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: ¿Cómo evito mostrar columnas repetidas?
« Respuesta #2 en: 16 Septiembre 2013, 19:17 pm »

Después de hacer un inner join entre las tablas Empleados y Trabajan, muestro todos los campos, y me queda algo así:


IdEmp   Nombre   Apellido   Direccion   IdEmp   IdCargo  IdSeccion


IdEmp pertenece a la tabla Empleados y también a la tabla Trabajan. Por eso se muestra dos veces. Y lo que quería saber es si existe alguna forma de mostrar la columna IdEmp una sola vez.

El Group By tengo entendido que sólo sirve cuando tengo funciones de agregación como lo son SUM(), COUNT(), etc. Pero no sé, capaz que sirve para más cosas también...
En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: ¿Cómo evito mostrar columnas repetidas?
« Respuesta #3 en: 16 Septiembre 2013, 21:07 pm »

Basicamente,
Código
  1.      SELECT emp.*, tra.IdCargo, tra.IdSeccion
  2.        FROM empleados emp
  3.  INNER JOIN trabajan tra ON empleados.idemp = trabajan.idemp
En línea

Te vendería mi talento por poder dormir tranquilo.
DanteInfernum

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: ¿Cómo evito mostrar columnas repetidas?
« Respuesta #4 en: 17 Septiembre 2013, 02:22 am »

Mmm... Ok, pero de esa forma estoy detallando explícitamente las columnas de la tabla Trabajan que quiero que aparezcan, que es justo lo que quería evitar.

Pero sí, parece que no hay otra forma. O indicas todas las columnas que quieras mostrar una por una, o las seleccionas TODAS con *. No existe algo así como:

Código
  1. SELECT * EXCEPT(columnaX)
  2.  

Talvez se pueda solucionar esto creando un procedimiento que te busque una determinada columna y la elimine, pero recién estoy empezando con el tema de los scripts en SQL y no lo tengo muy claro aún todo este asunto.


Muchas gracias por las respuestas!

Saludos.
En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: ¿Cómo evito mostrar columnas repetidas?
« Respuesta #5 en: 17 Septiembre 2013, 05:48 am »

:http://es.softuses.com/81643
En línea

Te vendería mi talento por poder dormir tranquilo.
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: ¿Cómo evito mostrar columnas repetidas?
« Respuesta #6 en: 23 Septiembre 2013, 19:42 pm »

No conozco alguna instrucción que haga eso, me temo que tendrás que indicarlas.

Edito:
Algo que se acerque puede ser.

Código
  1. SELECT empleados.*, trabajan.IdCargo, trabajan.IdSeccion, trabajan.IdTrab FROM empleados
  2. INNER JOIN trabajan ON empleados.IdEmp=trabajan.IdEmp
  3.  


Encontré esto... a ver si te sirve.

Estructura
Código
  1. mysql> SHOW FIELDS FROM products;
  2. +-------------+---------+------+-----+---------+----------------+
  3. | FIELD       | TYPE    | NULL | KEY | DEFAULT | Extra          |
  4. +-------------+---------+------+-----+---------+----------------+
  5. | id          | INT(11) | NO   | PRI | NULL    | AUTO_INCREMENT |
  6. | category_id | INT(11) | YES  |     | NULL    |                |
  7. | owner_id    | INT(11) | YES  |     | NULL    |                |
  8. +-------------+---------+------+-----+---------+----------------+
  9. 3 ROWS IN SET (0.01 sec)
  10.  

Código
  1. mysql> SET @SQL = CONCAT('SELECT ', (SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME), 'id,', '') FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'products' AND TABLE_SCHEMA = 'ehn'), ' FROM products');
  2. Query OK, 0 ROWS affected (0.03 sec)
  3.  

Código
  1. mysql> SELECT @SQL;
  2. +----------------------------------------+
  3. | @SQL                                   |
  4. +----------------------------------------+
  5. | SELECT category_owner_id FROM products |
  6. +----------------------------------------+
  7. 1 ROW IN SET (0.00 sec)
  8.  

Saludos.
« Última modificación: 23 Septiembre 2013, 20:10 pm por Darhius » En línea

abc
#!drvy


Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: ¿Cómo evito mostrar columnas repetidas?
« Respuesta #7 en: 23 Septiembre 2013, 20:20 pm »

Creo que USING fue creado precisamente para estas cosas xD

Código
  1. SELECT * FROM empleados INNER JOIN trabajan USING (idEmp)



Saludos
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: ¿Cómo evito mostrar columnas repetidas?
« Respuesta #8 en: 23 Septiembre 2013, 21:14 pm »

Creo que USING fue creado precisamente para estas cosas xD

Código
  1. SELECT * FROM empleados INNER JOIN trabajan USING (idEmp)

Genial. ;-) creo que le servirá.
Aunque tengo entendido que con esa función debe existir el campo en ambas tablas y por ende solo funciona con * JOIN.


Saludos.
« Última modificación: 23 Septiembre 2013, 21:17 pm por Darhius » En línea

abc
DanteInfernum

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: ¿Cómo evito mostrar columnas repetidas?
« Respuesta #9 en: 1 Octubre 2013, 18:20 pm »

¿La cláusula USING es propia de MySQL, no? Lo que pasa que yo estoy usando SQL Server. Igual está bueno el dato; me sirve a futuro.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cómo mostrar resultados en columnas
PHP
Fireball-CH 6 6,272 Último mensaje 31 Julio 2007, 03:03 am
por Fireball-CH
como mostrar todas las columnas AUN con valores null
.NET (C#, VB.NET, ASP)
irvincnt93 1 2,522 Último mensaje 20 Agosto 2015, 16:32 pm
por berni69
[Pregunta]: ¿Cómo evito esto al usar .prepend() en jQuery?
Desarrollo Web
Leguim 5 3,303 Último mensaje 21 Agosto 2021, 01:12 am
por Leguim
¿como evito bugs usando argv y memcpy?
Programación C/C++
otroWeyMas.nasm 2 2,816 Último mensaje 17 Abril 2022, 02:56 am
por otroWeyMas.nasm
¿Cómo puedo evitó que lean mi código?
Scripting
Ronxs 8 8,843 Último mensaje 13 Marzo 2024, 13:21 pm
por Conejo Blanco
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines