2014-03-05 3 views
0

나는 'ads은'.I이 웹 사이트 randomly.My 테이블 구조에 이러한 광고를 게재하려는라는 이름의 데이터베이스 테이블이다가mysql에서 여러 검사를 사용하여 데이터베이스 테이블에서 임의의 레코드를 가져 옵니까?

user_id     int(11)    
type     varchar(50)    
title     varchar(100)   
body     varchar(100)   
display_url    varchar(100)   
target_url    varchar(100)  
dimension    varchar(50)  
image     varchar(200)  
preferred_countries  text     
preferred_languages  text      
preferred_sites   text     
excluded_sites   text     
preferred_keywords  text     
excluded_keywords  text     
preferred_devices  varchar(100)  
schedule    mediumtext    
clicks     int(20)    
clicked     int(11)     
cpc      decimal(20,20)  

당신은 preferred_devicespreferred_countries 같은 열, preferred_languages이있다 볼 수 있듯이 나는 광고에 대해 선호하는 국가가있는 경우 여러 국가의 방문자에게 표시되는 것처럼 여러 개의 체크를 적용하여 방문자에게 이러한 광고를 표시하려고합니다. 사용자 ie와 관련된 모든 데이터를 가져 왔습니다. 방문자의 국가, 방문자의 언어 등

그러나 나는 이런 식으로 레코드를 가져 오는 방법을 알지 못합니다.

답변

0

당신은 MySQL's RAND() function은 $ mycountry 일치하지 않는 행을 필터링하지 것이다 ORDER BY FIELD()

SELECT * FROM `ads` 
ORDER BY FIELD(preferred_countries, '$mycountry') DESC, RAND() 
LIMIT 1 

이 함께 고려할 수하려고 노력하지만, 존재하는 경우 , 당신은 그들을 먼저 얻을 것이다. 둘 이상의 일치 항목이있는 경우 임의의 결과도 가져와야합니다.

물론 preferred_countries 필드에 여러 개의 국가 이름이 포함되어 있으면이 기능이 작동하지 않습니다.

1
select * from ads 
where preferred_countries = $mycountry 
order by rand() 
limit 1 
0

는이

select * from ads 
where preferred_countries = $mycountry and preferred_languages=$language 
order by rand() 
limit 1 
관련 문제