繁体   English   中英

PHP / MySQL-尝试选择两列,其中table1中的id等于table2中的id时出现问题

[英]PHP/MySQL - Trouble when trying to select two columns where id from table1 is equal to id from table2

这是我的查询:

$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_idextensa_econt_city等于city_idextensa_econt_office

然后,当我获得此信息时,我必须创建FORECH循环。 重要的是不要while循环。

这是我的示例代码:

<?PHP
foreach($results as $row){
   echo $row['econt_city.name'];
   echo $row['econt_office.name'];        
}
?>

在此foreach循环中,我必须从extensa_econt_officeextensa_econt_city选择行name

结构体: 在此处输入图片说明

我希望你理解我的要求。

您能帮我解决这个问题吗?

提前致谢!

我认为这可能符合您的意思。

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&o),您可以使用*选择所有记录(除非存在重复的名称,否则会出现错误),或者如上所述,直接在中选择所需的字段。查询。

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

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

    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'];        
}

您所需要的只是name列,而不是显示的所有列(选择*)。 不要使用通配符拖拽系统(选择*)。 还要进行显式联接。

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

进行显式连接,这与您在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 |
+-----------+-----------+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM