0

このクエリのすべてのデータが格納されている単一のテーブルを持つアプリケーションがあります。

SELECT item、name、address、city、state、zip、latitude、longitude、expiration、photo、(((acos(sin(("。$submission->latitude。"* pi()/ 180))* sin((latitude* pi()/ 180))+ cos(("。$submission->latitude。"* pi()/ 180))* cos((latitude* pi()/ 180))* cos((("。$submission ->longitude。"- longitude)* pi()/ 180))))* 180 / pi())* 60 * 1.1515 * 1.609344)距離としてOffers HAVINGからの距離<150AND有効期限>'$ daytime-6' ORDER BY distance ;

基本的に、クエリは選択された情報を検索し、計算を実行して$submission->緯度/経度からの距離を検索し、それらの距離で並べ替えます。

一部の外部委託された開発作業により、選択されたデータは現在、次の3つのテーブルに分散されています。テーブルビジネス:business_id、name、address、city、state、zip

テーブルの場所:business_id、location_id、緯度、経度

テーブルオファー:business_id、item、expiration、photo

分割テーブル構造で同じ結果を生成するためのクエリを取得するのにかなりの時間がかかります。business_idのバリエーションでJOINを試しましたが、不明な列やすべての派生テーブルに独自のエイリアスが必要であるという苦情が寄せられているようです。

私は決して優れたMySQLクエリビルダーではないので、これにどのように取り組むかについて正しい方向へのプッシュを求めています。

前もって感謝します。

4

2 に答える 2

1

You have to simply join your queries

$t1 = business table
$t2 = location tabe
$t3 = offers table

SELECT $t1.*,
       $t2.location_id,($t2.latitude .. compute ),($t2.longitude ... compute),
       $t3.item, $t3.expiration, $t3.photo
FROM $t1
JOIN $t2 on $t1.business_id = $t2.business_id
JOIN $t3 on $t3.business_id = $t1.business_id
于 2012-07-08T00:56:41.550 に答える