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


 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  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 3,688 veces)
DanteInfernum

Desconectado Desconectado

Mensajes: 60


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

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 por DanteInfernum » En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


WOS & Khan & Calero LDN


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

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


En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
DanteInfernum

Desconectado Desconectado

Mensajes: 60


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

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.705


WOS & Khan & Calero LDN


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

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

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
DanteInfernum

Desconectado Desconectado

Mensajes: 60


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

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.705


WOS & Khan & Calero LDN


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

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

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


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

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 por Darhius » En línea

abc
#!drvy


Desconectado Desconectado

Mensajes: 5.559



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

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 »

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 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 »

¿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 4,872 Último mensaje 31 Julio 2007, 03:03
por Fireball-CH
Como evito SQL Inyection? « 1 2 »
PHP
Skeletron 11 2,931 Último mensaje 8 Diciembre 2009, 22:25
por Skeletron
¿como borrar palabras repetidas?
Dudas Generales
11naracus 3 10,904 Último mensaje 7 Agosto 2012, 19:23
por abi-ds
como mostrar todas las columnas AUN con valores null
.NET (C#, VB.NET, ASP)
irvincnt93 1 1,184 Último mensaje 20 Agosto 2015, 16:32
por berni69
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines