Autor Tema: [AYUDA] MySQL 5.0: ayuda para plantear consultar  (Leído 10356 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
[AYUDA] MySQL 5.0: ayuda para plantear consultar
« : agosto 31, 2009, 04:57:12 pm »
Pues resulta que tengo problemas en formular una query que al parecer estoy intentando crearla de una forma nada que ver. Total que ya me rendí y pues hasta cólera me da porque siento que es una query sencilla al final :D

Bien pues la cosa es que tengo una tabla asi:

grupo valor
1 a
1 b
1 c
2 g
2 b
2 f
3 a
3 b
3 f
3 z

En este caso necesito encontrar los grupos que tengan exactamente todos los valores (ni mas ni menos), es decir: si busco los que tengan valor "b" me que NO devuelva los grupos 1, 2 y 3, si busco los que tengan "a" y "b" que NO me devuelva los grupos 1 y 3, tampoco si busco "a", "b", "c" y "d" que no me devuelva ningun grupo (ni el grupo 1 aunque este contenga "a", "b" y "c").

Cada grupo puede contener X numero de valores porque es para un tabla de flags que estoy haciendo y pues la verdad para el caso solo necesito que si busco por quienes tienen exactamente los valores "a", "b" y "c" que me devuelva el grupo 1.

Creo que podrá ser muy evidente pero en este caso ya no veo la solución xD

Cualquier consejo/ayuda/pista/recomendación será muy bien recibida y muy apreciada.

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: [AYUDA] MySQL 5.0: ayuda para plantear consultar
« Respuesta #1 : agosto 31, 2009, 07:29:00 pm »
Ayuda?

Desconectado realbo

  • -^- Elite Gold -^-
  • The Communiter-
  • **
  • Mensajes: 2720
Re: [AYUDA] MySQL 5.0: ayuda para plantear consultar
« Respuesta #2 : agosto 31, 2009, 08:55:13 pm »
tiene que ser a puro query? o tambien puede llevar programacion? se me ocurre hacer uso de sub querys

basandome en esto

Cada grupo puede contener X numero de valores porque es para un tabla de flags que estoy haciendo y pues la verdad para el caso solo necesito que si busco por quienes tienen exactamente los valores "a", "b" y "c" que me devuelva el grupo 1.

no se si te sirve algo asi

select DISTINCT grupo from tabla where valor in ('a', 'b', 'c')



Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: [AYUDA] MySQL 5.0: ayuda para plantear consultar
« Respuesta #3 : agosto 31, 2009, 09:06:25 pm »
Gracias, realmente mi meta es que funcione a como de lugar.

No he probado aun esa query que pusiste, pero me parece que siempre aceptaria al grupo aunque hubiera un valor "d" verdad?.

grupo valor
1 a
1 b
1 c
1 d

Como en ese caso siempre supongo que agarraría al grupo 1 aunque exista un valor "d". Voy a hacer la prueba mejor, gracias!.

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: [AYUDA] MySQL 5.0: ayuda para plantear consultar
« Respuesta #4 : agosto 31, 2009, 09:13:21 pm »
pos no entiendo que queres retornar¿?
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: [AYUDA] MySQL 5.0: ayuda para plantear consultar
« Respuesta #5 : agosto 31, 2009, 09:14:05 pm »
Algunos datos de ejemplo por si alguien quiere ayudarme:

Código: [Seleccionar]
create database test;
use test;
insert into tester(grupo,valor) values (1,'a'),(1,'b'),(1,'c'),(1,'d'),(2,'a'),(2,'b'),(2,'f'),(3,'a');

+-------+-------+
| grupo | valor |
+-------+-------+
|     1 | a     |
|     1 | b     |
|     1 | c     |
|     1 | d     |
|     2 | a     |
|     2 | b     |
|     2 | f     |
|     3 | a     |
+-------+-------+



Test sobre el codigo de realbo:
Código: [Seleccionar]
select DISTINCT grupo from tester where valor in ('a', 'b', 'c');
Resultado:
Código: [Seleccionar]
+-------+
| grupo |
+-------+
|     1 |
|     2 |
|     3 |
+-------+

Ahi no tuvo que haber devuelto ningun grupo :)

Gracias de igual forma por la atención de intentar!.

Desconectado realbo

  • -^- Elite Gold -^-
  • The Communiter-
  • **
  • Mensajes: 2720
Re: [AYUDA] MySQL 5.0: ayuda para plantear consultar
« Respuesta #6 : agosto 31, 2009, 09:15:04 pm »
fijate que me equivoque creo que no te funcionaria te retornaria los demas grupos pero tengo una duda, en el caso que pusiste queres que sea todos los valores es decir a b c d, o puede ser cualquiera?  mira y siempre te interesa que sea el grupo 1 el que retorne? no te importa evaluar los demas?

aun no capto muy bien en base al query que te puse proba

select DISTINCT grupo from tester where valor not in ('a', 'b', 'c');
« Última Modificación: agosto 31, 2009, 09:17:06 pm por realbo »

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: [AYUDA] MySQL 5.0: ayuda para plantear consultar
« Respuesta #7 : agosto 31, 2009, 09:19:20 pm »
pos no entiendo que queres retornar¿?

Necesito que me retorne los grupos que tengan exactamente el juego de valores que le indique.

Digamos que fueran pupuserias, que cada pupuseria tuviera ciertos tipos de pupusas, pero yo necesito conocer solo las que tengan exactamente el tipo de pupusas que quiero, ni menos, ni mas.

ej.:

Grupo | Especialidad
Pupuseria 1 |  Queso
Pupuseria 1 |  Chicharron
Pupuseria 2 | Frijol
Pupuseria 2 | Queso

digamos que quisiera saber cuales tienen exactamente de Frijol Y Queso (y si la Pupuseria 2 llegara a poner de Chicharron entonces ya no contaria).

Gracias!

Desconectado JGuillen™

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3449
  • PHP,C#,MySQL,SQL
Re: [AYUDA] MySQL 5.0: ayuda para plantear consultar
« Respuesta #8 : agosto 31, 2009, 09:31:48 pm »
Necesito que me retorne los grupos que tengan exactamente el juego de valores que le indique.

Digamos que fueran pupuserias, que cada pupuseria tuviera ciertos tipos de pupusas, pero yo necesito conocer solo las que tengan exactamente el tipo de pupusas que quiero, ni menos, ni mas.

ej.:

Grupo | Especialidad
Pupuseria 1 |  Queso
Pupuseria 1 |  Chicharron
Pupuseria 2 | Frijol
Pupuseria 2 | Queso

digamos que quisiera saber cuales tienen exactamente de Frijol Y Queso (y si la Pupuseria 2 llegara a poner de Chicharron entonces ya no contaria).

Gracias!


Creo que realbo te ha dado una buena salida..

fijate que me equivoque creo que no te funcionaria te retornaria los demas grupos pero tengo una duda, en el caso que pusiste queres que sea todos los valores es decir a b c d, o puede ser cualquiera?  mira y siempre te interesa que sea el grupo 1 el que retorne? no te importa evaluar los demas?

aun no capto muy bien en base al query que te puse proba

select DISTINCT grupo from tester where valor not in ('a', 'b', 'c');


No se si ya probastes de esa manera???  :big_boss:

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: [AYUDA] MySQL 5.0: ayuda para plantear consultar
« Respuesta #9 : agosto 31, 2009, 09:37:16 pm »
No se si ya probastes de esa manera???  :big_boss:
Si ya lo probe, pero ahi hubo una confusión con respecto a lo que se queria retornar :)

Gracias.

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: [AYUDA] MySQL 5.0: ayuda para plantear consultar
« Respuesta #10 : agosto 31, 2009, 09:48:49 pm »
pos ta algo cañon, el clavo que tengo ahorita es con aquellos grupos que tienen solo un valor de los buscados, siempre me aparecen :p
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado JGuillen™

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3449
  • PHP,C#,MySQL,SQL
Re: [AYUDA] MySQL 5.0: ayuda para plantear consultar
« Respuesta #11 : agosto 31, 2009, 09:54:35 pm »
Si ya lo probe, pero ahi hubo una confusión con respecto a lo que se queria retornar :)

Gracias.

Bueno mira proba esta consulta... yo la hice a si...


SELECT GRUPO FROM TESTER WHERE GRUPO NOT IN (SELECT GRUPO FROM TESTER WHERE VALOR NOT IN('a', 'b') GROUP BY GRUPO)

Esta consulta te daria como resultado

3


Si haces esta..

SELECT GRUPO FROM TESTER WHERE GRUPO NOT IN (SELECT GRUPO FROM TESTER WHERE VALOR NOT IN('b') GROUP BY GRUPO)

No te arrojaria resultados...


Proba y me contas si es eso lo que keres..!  ;)


Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: [AYUDA] MySQL 5.0: ayuda para plantear consultar
« Respuesta #12 : agosto 31, 2009, 10:01:56 pm »
Gracias!.

Probe con este:
Código: [Seleccionar]
SELECT GRUPO FROM tester WHERE GRUPO NOT IN (SELECT GRUPO FROM tester WHERE VALOR NOT IN('a', 'b','c','d') GROUP BY grupo);
tendria que retornar solo el grupo 1 pero retorna 1 y 3, y retornaria tambien cualquiera que tuviera al menos 1 de los grupos en el "NOT IN" y ninguno "invalido" (osea, retornaria los que "casi" pertecen tambien) :(

No se si me equivoco?
« Última Modificación: agosto 31, 2009, 10:03:54 pm por Vlad »

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: [AYUDA] MySQL 5.0: ayuda para plantear consultar
« Respuesta #13 : agosto 31, 2009, 10:21:18 pm »
Gracias!.

Probe con este:
Código: [Seleccionar]
SELECT GRUPO FROM tester WHERE GRUPO NOT IN (SELECT GRUPO FROM tester WHERE VALOR NOT IN('a', 'b','c','d') GROUP BY grupo);
tendria que retornar solo el grupo 1 pero retorna 1 y 3, y retornaria tambien cualquiera que tuviera al menos 1 de los grupos en el "NOT IN" y ninguno "invalido" (osea, retornaria los que "casi" pertecen tambien)

No se si me equivoco?
un problema parecido es el que tengo, creo que lo que pasa es que no han entendido lo que andas buscando, ya me lo imaginaba al principio, pero quede completamente seguro con el ejemplo de las pupusas XD

pd:
solo por curiosidad, no sabes si el maravilloso mysql puede trabajar con el tipo de datos array?¿ y si podes crearlos a partir de un resultado del query, porque esa puede ser una solucion...
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: [AYUDA] MySQL 5.0: ayuda para plantear consultar
« Respuesta #14 : agosto 31, 2009, 10:34:15 pm »
un problema parecido es el que tengo, creo que lo que pasa es que no han entendido lo que andas buscando, ya me lo imaginaba al principio, pero quede completamente seguro con el ejemplo de las pupusas XD

pd:
solo por curiosidad, no sabes si el maravilloso mysql puede trabajar con el tipo de datos array?¿ y si podes crearlos a partir de un resultado del query, porque esa puede ser una solucion...

Si fueras tan amable de proponer tu solucion aunque sea en otra variante de SQL?, de ahí podría figurarme mejor si hay alguna forma parecida en MySQL :D

Es que creo que en MySQL Arrays nativo no hay, pero eso *creo* nada mas :(