0

私のホームページは www.respectmyplanet.org で、Codeigniter について書いています。免責事項: 私は金融アナリストであり、趣味のプログラマーであり、正式なプログラミング教育を受けていません。

以下に私が書いていることの例を示します: 私のホームページで私の地図上の任意のマーカーをクリックすると、私の地理モデルからこのメソッドを実行する AJAX 呼び出しから情報ウィンドウが表示されます。

public function get_well_infowindow ($permit) {
    $sql = sprintf("SELECT * FROM mi_oil_well_info WHERE Permit_No = '%s' LIMIT 1 ",
    mysql_real_escape_string($permit));
    $query = $this->db->query($sql);
    return $query->result();
}

情報ウィンドウを見ると、オペレータ用の 4 桁の番号と地層用の 4 桁のコードが表示されます。すべてのデータは、MDEQ が提供するミシガン州のデータベースからのもので、MySQL に押し込んだだけです。

情報ウィンドウに「ビッグ テーブル」の「6450」ではなく「エンカナ ガス カンパニー」と表示させたいのですが、「ビッグ テーブル」の CLGD ではなく、コリングウッド シェール フォーメーションを「コリングウッド」と表示させたいのです。すべての会社をコードで、すべての組織をコードでリストする、ミシガン州からさらに 2 つのテーブルを追加しましたが、必要なデータを複数のテーブルから取得し、情報ウィンドウで人間が読みやすい情報を使用する方法がわかりません。

他のテーブルは非常に単純です。

column1 - OpNo     column2 - OpName
6450               Encana Gas Company

column1-ObjForm    column2 - FormName
CLGD               Collingwood Shale

現在、$marker_info[0]->OpNo「ビッグテーブル」への1つの呼び出しからエコーアウトしますが、$marker_info[0]->ObjFormエコーアウトしたいのですが、それらは他のテーブルからのものであり、複数のテーブルから取得する方法やこれをエコーバックする方法がわかりませんアウト。$marker_info[0]->OpName$marker_info[0]->FormName

誰かが私を助けることができます:私が今行っているように私の「大きなテーブル」からすべてを選択してください.

4

1 に答える 1

0

これを行うには、SQL でテーブルを結合します。あなたの質問では他の 2 つのテーブルの名前がわかりませんでしたので、最初のテーブルを other_table_1 と呼びます。

これを置き換えます:

SELECT * FROM mi_oil_well_info WHERE Permit_No = '%s' LIMIT 1 

これとともに:

SELECT mi_oil_well_info.*, other_table_1.OpName
FROM mi_oil_well_info
LEFT JOIN other_table_1 ON mi_oil_well_info.OpNo=other_table_1.OpNo
WHERE Permit_No = '%s' LIMIT 1 

別の select ステートメントを実行して、Permit_No が指定された名前を検索することによってこれを行うこともできますが、そうしないでください。テーブルを結合し、データベースに他のフィールドを検索させると、はるかに迅速かつ効率的に実行されます。

MySQL SELECT ステートメントの詳細: http://dev.mysql.com/doc/refman/5.0/en/select.html

于 2013-03-17T19:28:07.470 に答える