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();
}

如果您查看信息窗口,您将看到操作员的四位数字和地质构造的四位代码。所有数据都来自 MDEQ 提供的密歇根州数据库,我只是将其推入 MySQL。

我想让我的信息窗口在“大表”中显示“Encana Gas Company”而不是“6450”,并且我希望它为 Collingwood 页岩地层显示“Collingwood”而不是“大表”中的 CLGD。我从密歇根州添加了另外两个表格,按代码列出了所有公司和按代码列出的所有结构,但我不知道如何从多个表格中提取我需要的数据并让我的信息窗口使用更易于阅读的信息。

其他表非常简单:

column1 - OpNo     column2 - OpName
6450               Encana Gas Company

column1-ObjForm    column2 - FormName
CLGD               Collingwood Shale

目前,我$marker_info[0]->OpNo$marker_info[0]->ObjForm对“大表”的一次调用中回显,我想回显$marker_info[0]->OpName$marker_info[0]->FormName但它们来自其他表,我不知道如何从多个表中检索或回显出去。

任何人都可以帮助我:从我的“大表”中选择所有内容,就像我现在所做的那样工作得很好,但是将公司代码换成公司名称,将地质地层代码换成地质地层的详细描述以及如何将其回显出来?

4

1 回答 1

0

通过连接 SQL 中的表来做到这一点。我没有在您的问题中看到其他两个表的名称,所以我将第一个称为 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 回答