![](/img/trans.png)
[英]SELECT * FROM table1 INNER JOIN table2 ON table1.id=table2.id WHERE clause
[英]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_city
和extensa_econt_office
其中city_id
从extensa_econt_city
等于city_id
从extensa_econt_office
。
然后,当我获得此信息时,我必须创建FORECH循环。 重要的是不要while循环。
这是我的示例代码:
<?PHP
foreach($results as $row){
echo $row['econt_city.name'];
echo $row['econt_office.name'];
}
?>
在此foreach循环中,我必须从extensa_econt_office
和extensa_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_office
和extensa_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.