2012-08-06 38 views
8

Hi Ai đó có thể giúp tôi về sqlSQL Nhiều điều kiện trên sân đơn

tôi có dữ liệu này trong bảng của tôi:

 

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 


làm thế nào tôi có thể nhận được kết quả DATE_ADDED với vị trí trong 'Manila', 'Nhật Bản', 'Cebu' và có trạng thái = 1

Ba dữ liệu phải tồn tại trước khi tôi có thể lấy ngày.

quả nên được: dựa trên bảng này

 
date_added 
2012-08-01 
2012-08-06 

từ trên 2012/08/04 'Nhật Bản' không tồn tại.

MẪU hiện tại My SQL:

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

Xin giúp ..... bất kỳ trợ giúp sẽ đánh giá rất

Trả lời

10

thử điều này:

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

Hãy thử điều này

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

hoặc

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

truy vấn này sẽ cung cấp cho 2012/08/04 cũng –

+1

truy vấn đầu tiên nên sử dụng một số ngoặc xung quanh các điều kiện vị trí – mishu

+1

BAD trộn thực hành 'AND' và 'OR'. Bạn cũng nên đặt giá trị của OR. Điều này có nghĩa là (Manila OR Nhật Bản HOẶC cebu) VÀ trạng thái = 1 - hay - Manila HOẶC Nhật Bản HOẶC (cebu và trạng thái = 1) – Waygood

2

Bạn cần khai thác SQL IN:

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

Hoặc cách khác, bạn cần phải sử dụng các nhà điều hành OR và khung báo cáo vị trí:

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

Một trong những tuyên bố này sẽ cung cấp cho 2012-08-04 ở đầu ra. Tôi không nghĩ rằng đây là những gì OP muốn - anh chỉ muốn những ngày mà Manila, Cebu và Nhật Bản xuất hiện. – phillyd

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

khi bạn sử dụng AND điều kiện trên cùng một trường, nó sẽ luôn dẫn đến sai vì trường chỉ có thể có 1 possible value. Vì vậy, bạn needto sử dụng IN cho rằng

SELECT Date_added 
FROM myTable 
WHERE `Location` IN ('MANILA' , 'JAPAN' , 'CEBU') 
      AND `Status` =1 
GROUP BY Date_added 
HAVING COUNT(DISTINCT Location) = 3 
Các vấn đề liên quan