PHP / MySQL - 在尝试选择两个列时遇到问题,其中table1中的id等于table2中的id

时间:2015-09-28 12:16:55

标签: php mysql

这是我的问题:

$query = 'SELECT * extensa_econt_city as econt_city, extensa_econt_office as econt_office WHERE econt_city.city_id = econt_office.city_id';

我正在尝试选择表extensa_econt_cityextensa_econt_office中的所有行,其中来自city_id的{​​{1}}等于来自extensa_econt_city的{​​{1}}

然后,当我得到这个信息时,我必须创建FORECH循环。重要的是FORECH而不是循环。

以下是我的示例代码:

city_id

在这个foreach循环中,我必须从extensa_econt_office<?PHP foreach($results as $row){ echo $row['econt_city.name']; echo $row['econt_office.name']; } ?> 中选择行name

结构: enter image description here

我希望你明白我在问什么。

你能帮我解决这个问题。

提前致谢!

3 个答案:

答案 0 :(得分:2)

我认为这可能就是你的意思。

select 
    c.`city_id`,
    c.`post_code`,
    c.`type`,
    c.`name`,
    c.`name_en`,
    c.`zone_id`,
    c.`country_id`,
    c.`office_id`
    o.`FIELD_NAME` as 'ALIAS',
    o.`NEW_FIELD_NAME` as 'OTHER ALIAS'   
from `extensa_econt_city` c
left outer join `extensa_econt_office` o on o.`city_id`=c.`city_id`

一旦表别名(在这种情况下,别名是c&amp; o),你可以选择使用*的所有记录(除非有重复的名称,在这种情况下你会得到一个错误)或者,如上所述,选择直接在查询中的所需字段。

设置查询后,FOREACH循环可以通过sql中定义的名称/别名选择记录

答案 1 :(得分:2)

  

我正在尝试从表extensa_econt_city中选择所有行   extensa_econt_office,其中来自extensa_econt_city的city_id等于   来自extensa_econt_office的city_id ...   在此foreach循环中,我必须从nameextensa_econt_office中选择行extensa_econt_city

    SELECT eec.name AS ee_city_name,
           eeo.name AS ee_office_name,
      FROM extensa_econt_city eec
 LEFT JOIN extensa_econt_office eeo ON eec.city_id = eeo.city_id

在PHP foreach循环中,您可以访问如下数据:

<?php
foreach($results as $row){
   echo $row['ee_city_name'];
   echo $row['ee_office_name'];        
}

答案 2 :(得分:2)

您要查找的只是name列,而不是您显示的所有列(选择*)。不要使用通配符(使用select *)向下拖动系统。也做一个明确的加入。

这是我假装架构的视觉效果,因为我并不认为它是你的。

进行显式连接,不像你在where子句中的连接(该风格大约是1995年)

模式

create table extensa_econt_city
(   id int auto_increment primary key,
    city_id int not null,
    name varchar(100) not null
);
create table extensa_econt_office
(   id int auto_increment primary key,
    city_id int not null,
    name varchar(100) not null
);

insert extensa_econt_city(city_id,name) values (1,'eec name1'),(2,'eec name2'),(3,'eec name3');
insert extensa_econt_office(city_id,name) values (1,'EEO name1'),(2,'EEO name2'),(3,'EEO name3');

查询

select eec.name as eec_name,eeo.name as eeo_name 
from extensa_econt_city eec 
join extensa_econt_office eeo 
on eeo.city_id=eec.city_id;

结果

+-----------+-----------+
| eec_name  | eeo_name  |
+-----------+-----------+
| eec name1 | EEO name1 |
| eec name2 | EEO name2 |
| eec name3 | EEO name3 |
+-----------+-----------+