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)
| | | |-+  (SQL) Diferencias entre tablas de una misma tabla?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: (SQL) Diferencias entre tablas de una misma tabla?  (Leído 19,484 veces)
^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: (SQL) Diferencias entre tablas de una misma tabla?
« Respuesta #10 en: 20 Mayo 2009, 02:16 am »

Karman cielo nadie esta diciendo que no sabes para que sirve GROUP o DISTINCT, lo que tratabamos de decirte es que aun tu peticion no nos queda claro.

Analisando tu propuesta primera, dices que quieres todos los registros del campo data que contengan el sid = 1 aunque no especificamente pertenezcan a un eid especifico mas tu no quieres que se repita ni la data ni el eid?

Porque mira una formita de hacerlo, acorde a tu ejemplo inicial.

Código
  1.  
  2. mysql> SELECT DISTINCT(DATA), eid, sid FROM ejemplo GROUP BY(eid);
  3. +-----------+------+------+
  4. | DATA      | eid  | sid  |
  5. +-----------+------+------+
  6. | lara lara |    1 |    1 |
  7. | asdfasdf  |    2 |    1 |
  8. | qewrqer   |    3 |    1 |
  9. +-----------+------+------+
  10. 3 ROWS IN SET (0,00 sec)
  11.  
  12.  

Esta es la tabla creada por mi para recrear tu escenario :

Código
  1.  
  2. mysql> SELECT * FROM ejemplo;
  3. +------+------+-----------+
  4. | eid  | sid  | DATA      |
  5. +------+------+-----------+
  6. |    1 |    1 | lara lara |
  7. |    1 |    1 | qewrqer   |
  8. |    2 |    1 | asdfasdf  |
  9. |    2 |    1 | lara lara |
  10. |    3 |    1 | qewrqer   |
  11. |    3 |    0 | zxcvzcv   |
  12. +------+------+-----------+
  13. 6 ROWS IN SET (0,38 sec)
  14.  
  15.  

Dime si estamos mas cerca de tu peticion?


En línea

Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: (SQL) Diferencias entre tablas de una misma tabla?
« Respuesta #11 en: 20 Mayo 2009, 02:49 am »

bueno, trato de explicarlo con mi ejemplo inicial para ver si logro hacerme entender... tenemos esto:

Código
  1. mysql> SELECT * FROM ejemplo;
  2. +------+------+-----------+
  3. | eid  | sid  | DATA      |
  4. +------+------+-----------+
  5. |    1 |    1 | lara lara |
  6. |    1 |    1 | qewrqer   |
  7. |    2 |    1 | asdfasdf  |
  8. |    2 |    1 | lara lara |
  9. |    3 |    1 | qewrqer   |
  10. |    3 |    0 | zxcvzcv   |
  11. +------+------+-----------+
  12. 6 ROWS IN SET (0,38 sec)
  13.  

yo necesitaría los DATA (olvidemos que sean distintos por un momento), que NO pertenezcan a un determinado eid... (olvidemos el sid tb)... repito lo que puse la otra vez reducido (omito lo de la repetición):

Citar
no tiene que estar dentro del grupo de archivos del "dueño" (un determinado eid)

tendríamos (por ejemplo pasándole como argumento eid=1):

Código
  1. mysql> SELECT * FROM ejemplo;
  2. +------+-----------+
  3. | eid  | DATA      |
  4. +------+-----------+
  5. |    1 | lara lara | *** archivo de eid 1
  6. |    1 | qewrqer   | *** archivo de eid 1
  7. |    2 | asdfasdf  |
  8. |    2 | lara lara | *** archivo de eid 1
  9. |    3 | qewrqer   | *** archivo de eid 1
  10. +------+-----------+
  11. 6 ROWS IN SET (0,38 sec)
  12.  

me tendría que devolver:

Código
  1. mysql> SELECT X lara lara;
  2. +------+-----------+
  3. | eid  | DATA      |
  4. +------+-----------+
  5. |    2 | asdfasdf  |
  6. +------+-----------+
  7. 1 ROWS IN SET (0 sec)
  8.  

y si le pasamos como argumento eid=3) (el primer ejemplo):

Código
  1. mysql> SELECT * FROM ejemplo;
  2. +------+-----------+
  3. | eid  | DATA      |
  4. +------+-----------+
  5. |    1 | lara lara |
  6. |    1 | qewrqer   | *** archivo de eid 3
  7. |    2 | asdfasdf  |
  8. |    2 | lara lara |
  9. |    3 | qewrqer   | *** archivo de eid 3
  10. +------+-----------+
  11. 6 ROWS IN SET (0,38 sec)
  12.  

me tendría que devolver:

Código
  1. mysql> SELECT X lara lara;
  2. +------+-----------+
  3. | eid  | DATA      |
  4. +------+-----------+
  5. |    1 | lara lara | *** se repite
  6. |    2 | asdfasdf  |
  7. |    2 | lara lara | *** se repite
  8. +------+-----------+
  9. 1 ROWS IN SET (0 sec)
  10.  

eso sería lo fundamental... ahora como "lara lara" se repite entre los resultados válidos, necesitaría solo uno...

creo que simplemente no se puede directamente con SQL, pero como creen que sería la forma más eficiente de hacerlo?

S2


« Última modificación: 20 Mayo 2009, 02:58 am por Karman » En línea

Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: (SQL) Diferencias entre tablas de una misma tabla?
« Respuesta #12 en: 20 Mayo 2009, 04:19 am »

lo conseguí!!!!  :xD esta es la sentencia:

Código
  1. SELECT * FROM ejemplo WHERE (DATA) NOT IN (SELECT DATA FROM ejemplo WHERE eid =X) GROUP BY DATA

S2
« Última modificación: 20 Mayo 2009, 04:22 am por Karman » En línea

Anibal784


Desconectado Desconectado

Mensajes: 762

Yo no la vote, pero me la tengo que aguantar igual


Ver Perfil WWW
Re: (SQL) Diferencias entre tablas de una misma tabla?
« Respuesta #13 en: 20 Mayo 2009, 04:27 am »

Karman, por lo que logro entender sólo quieres listar los archivos de un usuario que aún no son de él, por lo que lo único que necesitas es, o el id del archivo o el nombre del archivo, en ambos casos un distinc en el primer SELECT debería bastar.
Si aún quieres retener todos los campos, podrías usar GROUP BY para agruparlos por DATA y así se te haga más fácil luego el procesamiento (ya que al estar ordenados sería cuestión de agarrar un registro e ignorar mientras sean iguales).
En línea

El que llega sin que lo llamen, se va sin que lo echen.

Citar
Vos no la votaste por eso la tenes adentro.
Lo fino no es lo tuyo, y a mi me chupa un huevo, soy argentino y no peronista, y eso es lo que realmente te molesta.
Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: (SQL) Diferencias entre tablas de una misma tabla?
« Respuesta #14 en: 20 Mayo 2009, 04:33 am »

Si aún quieres retener todos los campos, podrías usar GROUP BY para agruparlos por DATA y así se te haga más fácil luego el procesamiento (ya que al estar ordenados sería cuestión de agarrar un registro e ignorar mientras sean iguales).

si... es lo que termine haciendo, pero en MSSQL me patea por que hay multiples eid y no sabe como agruparlos... en MySQL me devuelve el primero (lo que quería), ahora el tema es hacer que funcine en ambas bases de datos (uso las dos) o hacerlo a mano...

S2
En línea

Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: (SQL) Diferencias entre tablas de una misma tabla?
« Respuesta #15 en: 21 Mayo 2009, 03:43 am »

pa los que saben...no hay forma de hacer que el código de arriba funcione con ambas bases de datos??? :huh: no le encuentro la vuelta...  :-(

S2
En línea

Toxico


Desconectado Desconectado

Mensajes: 406



Ver Perfil
Re: (SQL) Diferencias entre tablas de una misma tabla?
« Respuesta #16 en: 26 Mayo 2009, 05:16 am »

Hola, Si Solo Necesitas el campo DATA , solo coloca DATA en lugar de *, con esto te deberia de funcionar en MSSQL.
Código:
SELECT DATA FROM ejemplo WHERE (DATA) NOT IN (SELECT DATA FROM ejemplo WHERE eid =X) GROUP BY DATA

Saludos
Miguel Angel

En línea

solo el principio....

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
2 foreign keys (delete cascade) haciendo referencia a una misma tabla
Bases de Datos
Littl3 1 3,735 Último mensaje 16 Septiembre 2011, 04:57 am
por fran800m
Diferencias en la misma imagen?¿
GNU/Linux
jhonsc 1 1,931 Último mensaje 23 Noviembre 2011, 04:23 am
por Foxy Rider
Cómo relacionar 1 tabla con N tablas
Desarrollo Web
carlosgxs 2 3,669 Último mensaje 6 Abril 2012, 05:57 am
por carlosgxs
foreing Key en la misma tabla
Bases de Datos
David Vans 0 1,987 Último mensaje 22 Febrero 2013, 00:18 am
por David Vans
¿Cuál es la diferencia entre la tabla sesión y la tabla usuarios?
Desarrollo Web
zagk 1 2,593 Último mensaje 1 Mayo 2018, 19:55 pm
por #!drvy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines