从MySQL中的多个表中选择和显示

时间:2013-03-17 19:02:00

标签: php mysql ajax codeigniter

我的主页是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中。

我想让我的infowindow说“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但是他们来了从那些其他表中我不知道如何从多个表中检索或回显这个。

任何人都可以帮助我:从我的“大桌子”中选择一切,就像我现在做的那样工作得很好,但是将公司代码换成公司名称和地质构造代码,以便长期描述地质构造以及如何回应它出?

1 个答案:

答案 0 :(得分: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