Ver Mensaje Individual
  #9 (permalink)  
Antiguo 09/11/2009, 20:17
Avatar de gnzsoloyo
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, 5 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)