Php 是否使用一个公共字段从列中获取数据?
表exp\U通道数据作为ecd:Php 是否使用一个公共字段从列中获取数据?,php,mysql,Php,Mysql,表exp\U通道数据作为ecd: id | field_id_16| img_src 1 | 2 | a.jpg 2 | 1 | b.jpg 3 | 3 | c.jpg 表pin_信息作为pi: id | look_week | member_id | is_pinned 1 | 2 | 2 | yes 2 | 1 | 2 | yes 3 | 3 |
id | field_id_16| img_src
1 | 2 | a.jpg
2 | 1 | b.jpg
3 | 3 | c.jpg
表pin_信息作为pi:
id | look_week | member_id | is_pinned
1 | 2 | 2 | yes
2 | 1 | 2 | yes
3 | 3 | 1 | yes
我想做什么:
$sql="
SELECT
ecd.field_id_17 as pin_img
FROM exp_channel_data ecd
WHERE
ecd.field_id_16=(
SELECT look_week
FROM pin_info pi
WHERE
pi.member_id='$member_id'
AND is_pinned='yes'
)
";
从表ecd中获取成员的img src数组(假设为2),并且is_pinted=yes。我仅有的公共字段是field_id_16和look_week
我所做的:
$sql="
SELECT
ecd.field_id_17 as pin_img
FROM exp_channel_data ecd
WHERE
ecd.field_id_16=(
SELECT look_week
FROM pin_info pi
WHERE
pi.member_id='$member_id'
AND is_pinned='yes'
)
";
我无法获取数组。错误是子查询返回的行数超过1行它说的是正确的,因为有两行的成员id为2请尝试使用join
SELECT ecd.img_src as pin_img FROM exp_channel_data ecd
JOIN pin_info pi ON (ecd.field_id_16 = pi.look_week )
WHEHER pi.member_id='$member_id' AND pi.is_pinned='yes'
我想你在
exp\u channel\u data
中没有字段id\u 17
如果我在上使用连接ecd会怎么样。我的意思是为什么joi pin\u info而不是ecd。我得到了结果。我只是想问你在from子句之后已经提到了ecd,所以ecd将与pin\u info表连接。它给了我一个数组中的数组。所有连接都给出了吗您可以在相同的模式中看到结果?联接只提供所需的数据集这取决于您如何使用任何服务器端语言操纵数据联接与数组无关,数组使用服务器端语言而不是mysql查询您可以解释where子句吗?where ecd.field_id_16 in(2,1)基于子查询。IN用于多个值。