2014-03-05 98 views
0

我有一個名爲「ads」。我想顯示在網站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_countries列,preferred_languagespreferred_devices等 我想通過應用多個檢查來向訪問者展示這些廣告,例如,如果有任何廣告有優先國家,那麼它將顯示給該特定國家的訪問者等等。 我已經提取了與用戶ie有關的所有數據。訪客的國家,訪問者的語言等

但我不知道如何獲取這樣的記錄。

回答

0

你可以考慮MySQL's RAND() functionORDER BY FIELD()

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

這種結合不會過濾掉不$ mycountry匹配的行,但如果它們存在,你會先拿到他們。如果有多個匹配項,你也應該得到一個隨機結果。

當然,如果您的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 
相關問題