2012-08-06 19 views
8

Hola ¿Puede alguien ayudarme sobre SQLSQL condición múltiple con sencillo en el campo de

que tengo estos datos en mi mesa:

 

date_added | location  | status 
2012-08-01 Manila   1 
2012-08-01 Japan   1 
2012-08-01 Cebu    1 

2012-08-04 Manila   1 
2012-08-04 Cebu    1 
2012-08-04 Africa   1 

2012-08-06 Manila   1 
2012-08-06 Japan   1 
2012-08-06 Cebu    1 


¿Cómo puedo obtener el resultado DATE_ADDED con la ubicación en 'Manila', 'Japón', 'Cebu' y tiene estado = 1

Los tres datos deben existir antes de que pueda obtener la fecha.

resultado debe ser: Basado en esta tabla

 
date_added 
2012-08-01 
2012-08-06 

desde el 2012-08-04 'Japón' no existe.

Mi actual SQL MUESTRA:

 
SELECT date_added FROM TABLE WHERE location ='Manila' AND location ='Japan' 
     AND location ='Cebu' AND STATUS =1; 

Por favor, ayudar ..... cualquier ayuda será apreciada

Respuesta

10

intente esto:

SELECT DATE_ADDED 
FROM TABLE 
WHERE LOCATION IN ('MANILA' , 'JAPAN' , 'CEBU') 
AND STATUS =1 
GROUP BY DATE_ADDED 
HAVING (COUNT(DISTINCT LOCATION)=3) 
0

probar este

SELECT date_added FROM TABLE WHERE location ='Manila' or location ='Japan' or location ='Cebu' AND STATUS =1; 

o

select date_added FROM TABLE WHERE location in ('Manila','Japan','Cebu') AND status='1' GROUPED BY date_added 
+0

esta consulta dará 2012-08-04 También –

+1

la primera consulta debe utilizar algún paréntesis alrededor de la ubicación – mishu

+1

condiciones de mezcla BAD práctica de la 'Y' y 'O'. También debe poner entre corchetes los quirófanos. Significa esto (Manila O Japón O cebu) AND estado = 1 --o-- Manila O Japón O (cebu y estado = 1) – Waygood

2

Se necesita el operador SQL IN:

SELECT date_added FROM TABLE WHERE location IN ('Manila', 'Japan', 'Cebu') AND STATUS =1; 

O, alternativamente, es necesario utilizar el operador OR y el soporte de las declaraciones de ubicación:

SELECT date_added FROM TABLE WHERE (location ='Manila' OR location ='Japan' OR location ='Cebu') AND STATUS =1; 
+0

Cualquiera de estas declaraciones dará 2012-08-04 en la salida. No creo que esto sea lo que quiere el OP, solo quiere las fechas en las que aparecen Manila, Cebu Y Japón. – phillyd

0
WHERE location IN ('Manila' , 'Japan', 'Cebu') AND status = 1 
0

cuando se utiliza AND condición en el mismo campo, siempre dará como resultado falso porque campo solo puede tener 1 possible value. Por lo que needto utilizar IN para que

SELECT Date_added 
FROM myTable 
WHERE `Location` IN ('MANILA' , 'JAPAN' , 'CEBU') 
      AND `Status` =1 
GROUP BY Date_added 
HAVING COUNT(DISTINCT Location) = 3 
Cuestiones relacionadas