0

このクエリがあります

select distinct 
    loc.mID, 
    loc.city, 
    loc.state, 
    loc.zip, 
    loc.country, 
    loc.latitude, 
    loc.longitude, 
    baseInfo.firstname, 
    baseInfo.lastname, 
    baseInfo.profileimg, 
    baseInfo.facebookID, 
    (((acos(sin(('37.8068406'*pi()/180)) * sin((`latitude`*pi()/180))+cos(('37.8068406'*pi()/180)) * cos((`latitude`*pi()/180)) * cos((('-121.3062367' - `longitude`)*pi()/180))))*180/pi())*60*1.1515) AS `distance`, teams.teamName, teams.leagueType, teams.teamType, teams.subcat 
FROM memb_geo_locations loc 
left join memb_friends friends on (friends.mID = loc.mID or friends.friendID = loc.mID) and (friends.mID = '100019' or friends.friendID = '100019') 
join memb_baseInfo baseInfo on baseInfo.mID = loc.mID 
join memb_teams teams on teams.mID = loc.mID
where 
    loc.primaryAddress = '1' and ((friends.mID is null or friends.friendID is null) or (friends.isactive = 2)) 
and 
    (teams.teamName like '%Buffalo Bills%' or teams.teamName like '%New England Patriots%' or teams.teamName like '%Dallas Cowboys%')
and 
    loc.mID != 100019 
having 
    `distance` < 50 
order by baseInfo.firstname asc limit 30

これは私のコアニーズに完全に対応しています。ただし、クエリを取得してそれを改良する方法を理解しようとしています。

(teams.teamName like '%Buffalo Bills%' or teams.teamName like '%New England Patriots%' or teams.teamName like '%Dallas Cowboys%')

クエリの最後に指定された制限の最大出力を持ちながら、チーム名ごとに定義された最大量の結果をそれぞれ生成します (1 つあたりの最大値を求めるだけで、1 つあたりの最大値を求めるだけでも問題ありません)。このクエリを改良して、私が望んでいることを実行できる方法はありますか? これに似た別の最近の投稿で誰かが私に言ったことをチェックアウトしましUNIONたが、それがこのクエリにどのように適用されるかわかりません? それが正しい方向であると仮定します。

4

0 に答える 0