2012-02-21 10 views
0

私はこのクエリを持っています。それは私に合併症を与えているようだ。 3番目のテーブルの制約を取り除くとうまくいきます。しかし私は、私が取り組んでいる検索を洗練するためには、3番目の表の制約が必要です。私の問題は、私にエラーを与えているのではなく、私が自分のDBに持っているデータで少なくとも1つの結果が得られるかのどちらかの結果が得られないことです。mysql複数の内部結合合併症

SELECT loc.*, 
     a.firstname, 
     a.lastname, 
     a.profileimg, 
     (((acos(sin((37.2790669*pi()/180)) * sin((`latitude`*pi()/180))+cos((37.2790669*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((-121.874722 - `longitude`)*pi()/180))))*180/pi())*60*1.1515) AS `distance` 
    FROM geo_locations loc 
    JOIN memb_Info a ON a.mID = loc.mID 
WHERE a.firstname LIKE 'Lisa%' 
    AND loc.primaryAddress = '1' 
    AND memb_x.xName LIKE '%Monkey' 
ORDER BY `distance` ASC 

私は

AND memb_x.xName LIKE '%Monkey' 

を削除する場合、私は結果に何の問題を取得していないが、memb_xテーブルは、私が上記のクエリに適用したいが、私はように見えるその種類のフィルタであり、列のXNameを持っています私はそれをどのように処理すべきかで失われる。私は内部に正しく参加しようとしましたが、それは私には何の利点もありませんでした。その結果、重複した結果と結果が得られました。

だから、それを分解してください。私がしたいことは、メンバーのラジアル検索を行い、他のメンバーを見ることができるようにすることです。それは最初にgeo_locationsから出てきました。私はIDの情報を取得しようとしていますので、INNER JOINメンバfirstname lastnameなどのmemb_Infoテーブル。すべてのテーブル間の1つのコネクタは、メンバIDであるmIDです。今度は3番目のテーブルにあるこのメンバーIDには、同様のインタレストやフィルタを持つユーザーがいるので、これらのフィルタに基づいて結果を細くしたいのですが、これは私のクエリを適切に構成していない場所であり、

+0

は、あなたがた条件に一致するデータを持っていますか? 'LIKE '%Monkey''は文字列が" Monkey "で終わらなければならないことを意味します。 –

+1

あなたのクエリは 'memb_x'テーブルにまったく参加しません - エラーを返し、最初はうまくいかないでしょうか?あなたは '? JOIN memb_x ON memb_x.mID = a.mID'ここで、あなたの設定(INNER、LEFT、...)に適切な結合を選択します。 –

+0

はい、私は達成したいものと一致する基準を持っています。ちょうど質問を正しいものにすることは、私のためには重要な部分です。そして、上記には参加していませんが、他のクエリと同様に、関連するものは何も得られなかったものを試してみました。 – chris

答えて

1

私はあなたが何を意味するのかわからないんだけど、それはあなたが必要がある。このようなものです:

SELECT loc.*, 
    a.firstname, 
    a.lastname, 
    a.profileimg, 
    (((acos(sin((37.2790669*pi()/180)) * sin((`latitude`*pi()/180))+cos((37.2790669*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((-121.874722 - `longitude`)*pi()/180))))*180/pi())*60*1.1515) AS `distance` 
FROM geo_locations loc 
JOIN memb_Info a ON a.mID = loc.mID 
JOIN memb_x x ON x.mID=loc.mID 
WHERE a.firstname LIKE 'Lisa%' 
AND loc.primaryAddress = '1' 
AND x.xName LIKE '%Monkey' 
ORDER BY `distance` ASC