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

como hacer para que un campo tome varios valores al mismo tiempo

Estas en el tema de como hacer para que un campo tome varios valores al mismo tiempo en el foro de Mysql en Foros del Web. Hola: tengo un problema, necesito hacer que un campo de un tabla tome 3 valores al mismo tiempo, ya lo intente uniendo selects pero es ...
  #1 (permalink)  
Antiguo 06/11/2009, 13:46
 
Fecha de Ingreso: diciembre-2007
Mensajes: 10
Antigüedad: 16 años, 3 meses
Puntos: 1
como hacer para que un campo tome varios valores al mismo tiempo

Hola:

tengo un problema, necesito hacer que un campo de un tabla tome 3 valores al mismo tiempo, ya lo intente uniendo selects pero es como si fuera un or y lo que necesito es un and

ejemplo:

select nombre_cliente from clientes where idcliente=1 and idcliente=4 and idcliente=7

eso es lo q quiero hacer pero no se puede, intente con intersect pero mysql no lo soporta, lo hice con union pero es un or y necesito que se cumplan las 3 condiciones.

Porfavor Ayudenme.........
  #2 (permalink)  
Antiguo 06/11/2009, 13:53
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: como hacer para que un campo tome varios valores al mismo tiempo

No entendí, no puede haber un registro que tenga al mismo tiempo los valores 1, 4 y 7 en el mismo campo. ¿Qué es exactamente lo que quieres hacer?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 06/11/2009, 13:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: como hacer para que un campo tome varios valores al mismo tiempo

No se puede porque es imposible que en un mismo registro, un campo tenga más de un valor al mismo tiempo. La idea es que es imposible meter dos pies en el mismo zapato. Sólo entra uno. En un campo sólo entra un dato.
Poner más de uno hace que ese campo carezca de dominio. Pasa a ser información sucia.
Hacerlo viola los principios de diseño de bases de datos.

Lo que si puedes hacer es que te devuelva todos los registros que cumplan con una serie de condiciones, como por ejemplo, aquellos registros cuyos valores estén comprendidos en un grupo determinado (1, 4, 7 en tu caso), pero esa consulta te devolverá o ninguno o hasta tres registros, considerando que estás buscando tres valores diferentes.

Explicanos esto: ¿Cómo es posible que un mismo registro tenga un ID multivaluado? ¿En qué contexto tiene sentido eso?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 06/11/2009, 13:59
 
Fecha de Ingreso: diciembre-2007
Mensajes: 10
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: como hacer para que un campo tome varios valores al mismo tiempo

lo q pasa es q tengo una bd donde un producto tiene dimensiones algo asi

tabla dimensiones

id referencia valor tipo dim
1 d 1 metric
1 D 3 metric
1 B 1 metric


entonces lo que quiero es q me muestre los nombres de los productos mientra q valor=1 and valor=3 and valor=1 and referencia=d and referencia=D and referencia=B, pero al mismo tiempo
  #5 (permalink)  
Antiguo 06/11/2009, 15:25
 
Fecha de Ingreso: octubre-2008
Mensajes: 127
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: como hacer para que un campo tome varios valores al mismo tiempo

Hola,

creo que lo que quieres hacer es una consulta de grupo. Es decir, por lo que entiendo, tienes un elemento más de una vez, y lo que quieres son aquellos elementos que, además de ser el mismo elemento, te cumple cierta condición. Si es así, se trataría una consulta de grupo. Algo similar a:
SELECT id, count(1)
FROM
dimensiones
where
valor in (1,3) and refencia in ('d','D')
group by id;

Saludos.
  #6 (permalink)  
Antiguo 06/11/2009, 15:45
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: como hacer para que un campo tome varios valores al mismo tiempo

Aparte de solucionar tu duda, creo que deberias aprender sobre operadores logicos

tutorial: http://es.hscripts.com/tutoriales/my...o-operador.php
  #7 (permalink)  
Antiguo 07/11/2009, 21:15
 
Fecha de Ingreso: diciembre-2007
Mensajes: 10
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: como hacer para que un campo tome varios valores al mismo tiempo

buen aporte muchas gracias..........

voy a intentar tu respuesta
  #8 (permalink)  
Antiguo 09/11/2009, 19:20
 
Fecha de Ingreso: diciembre-2007
Mensajes: 10
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: como hacer para que un campo tome varios valores al mismo tiempo

hola...

nuevamente yo no se pudo hacer la consulta como les decia, tuve q modificar la base de datos, pero gracias por sus respuestas, espero poderles ayudar en algo

Adios :)
  #9 (permalink)  
Antiguo 09/11/2009, 20:17
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: como hacer para que un campo tome varios valores al mismo tiempo

Meditando un poco tu problema, me encontré con algo que, yo supongo, puede ser lo que buscas, pero que requiere una aclaración:
La sentencia de ejemplo que nos has puesto es imposible de resolver tal y como la planteas, porque si usas una tabla CLIENTES, y buscas un campo IDCLIENTE, estamos suponiendo que ese campo es PRIMARY KEY, y por tanto jamás habrá dos entradas de diferente IDCLIENTE para el mismo cliente. Eso sería absurdo.
Ahora bien, supongamos una tabla de algún tipo, digamos PEDIDOS, que si puede tener pedidos del mismo artículo de diferentes clientes, y de diferentes artículos del mismo cliente.
En este caso si lo que quiero es saber qué clientes han comprado solamente tres tipos de artículos y nada más que esos tres, eso se puede hacer:

Código sql:
Ver original
  1. SELECT idArticulo, idCliente, NombreCliente
  2. FROM Pedido INNER JOIN Cliente USING(idCliente)
  3. WHERE idArticulo IN (1, 2, 7)
  4. GROUP BY idArticulo, idCliente;
Esto nos devuelve una tabla en que por cada artículo (comprendido entre tres IDs posibles) y cliente hay una sola línea. A este resultado le realizo una cuenta adicional, donde pido que me devuelva aquellos clientes que compraron los tres, caso que se cumple si y sólo si tengo hasta tres registros por Cliente (uno por cada artículo):
Código sql:
Ver original
  1. SELECT idCliente, NombreCliente
  2. FROM
  3.    (SELECT idArticulo, idCliente, NombreCliente
  4.    FROM Pedido INNER JOIN Cliente USING(idCliente)
  5.    WHERE idArticulo IN (1, 2, 7)
  6.    GROUP BY idArticulo, idCliente) T1
  7. GROUP BY idCliente
  8. HAVING COUNT(*)=3;

Quiero que quede claro lo que dije antes: El modelo de consulta que propones al principio resulta absurdo si usas una tabla CLIENTE en la que esperas que haya más de una PRIMARY KEY por cada Cliente. Una PK es única y sólo identifica a un cliente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:35.