Php 加入2个mysql查询,其中第二个查询取决于第一个查询的输出

Php 加入2个mysql查询,其中第二个查询取决于第一个查询的输出,php,mysql,Php,Mysql,我使用我的第一个查询获取用户的id和名称,如下所示: select id,name from temp_card where sex='$sex' and city='$city' order by name ASC 然后我有第二个查询,它使用第一个查询的结果,并从另一个表中获取更多数据: select images from temp_card_images where temp_card_id=". $row['id'] ." order by id ASC limit 1 如何组合这两

我使用我的第一个查询获取用户的id和名称,如下所示:

select id,name from temp_card where sex='$sex' and city='$city' order by name ASC
然后我有第二个查询,它使用第一个查询的结果,并从另一个表中获取更多数据:

select images from temp_card_images where temp_card_id=". $row['id'] ." order by id ASC limit 1
如何组合这两个查询,以便在单个while循环中打印出3个字段id、name和image


谢谢大家!

您需要执行连接查询

select tc.id, tc.name, tci.images from temp_card tc
left join temp_card_images  tci
on tc.id = tci.temp_card_id
where tc.sex='$sex' and tc.city='$city' order by tc.name ASC

您需要执行联接查询

select tc.id, tc.name, tci.images from temp_card tc
left join temp_card_images  tci
on tc.id = tci.temp_card_id
where tc.sex='$sex' and tc.city='$city' order by tc.name ASC

你需要学习加入。这可以像这样实现

SELECT tc.id,tc.name,tci.images
FROM temp_card tc
    INNER JOIN temp_card_images tci ON tc.id=tci.temp_card_id
WHERE sex='$sex' 
  AND city='$city' 
GROUP BY tc.id
ORDER BY name ASC

你需要学习加入。这可以像这样实现

SELECT tc.id,tc.name,tci.images
FROM temp_card tc
    INNER JOIN temp_card_images tci ON tc.id=tci.temp_card_id
WHERE sex='$sex' 
  AND city='$city' 
GROUP BY tc.id
ORDER BY name ASC

尽管与此无关,但我强烈建议您考虑将其用作数据库访问层。它适用于大多数数据库类型,如MySQL、SQLite等。。它将有助于防止SQL注入数据库

编辑
删除了答案,因为给定的连接是更好的答案。

尽管不相关,但我强烈建议您考虑将其用作数据库访问层。它适用于大多数数据库类型,如MySQL、SQLite等。。它将有助于防止SQL注入数据库

编辑

删除了答案,因为给定的联接是更好的答案。

如果两个表都有一个名称id为的列,该怎么办?如何指定要使用的列?将表名与列名一起使用,如temp_card.idI,我遇到了以下错误:注意:在SQL查询脚本中发现了一个错误:字段列表中的列“id”不明确。它指向我的数据库类文件。它指向的一行是:trigger_error“在SQL查询脚本中发现了一个错误:”$这个->错误';当然,在这里使用内部连接更好吗?如果tci.temp\u card\u id中不存在tc.id怎么办?LiquiorCivar,我也使用了您的查询,但遇到了相同的错误。我不确定错误在哪里。如果两个表都有一个名为id的列,该怎么办?我们如何指定要使用的列?将表名与列名一起使用,如temp_card.idI,会出现以下错误:注意:在SQL查询脚本中发现一个错误:字段列表中的列“id”不明确。它指向我的数据库类文件。它指向的一行是:trigger_error“在SQL查询脚本中发现了一个错误:”$这个->错误';当然,在这里使用内部连接更好吗?如果tci.temp\u card\u id中不存在tc.id怎么办?LiquiorCivar,我也使用了您的查询,但遇到了相同的错误。我不确定故障在哪里。如果我只想从临时卡映像表中选择一行,该怎么办?对于temp_card表中的每个结果,只有一个图像?@salmanijazi如果您只需要一个图像,则添加一个限制。我还向SELECT子句中添加了表别名,这将消除该错误。如果您想要临时卡图像id,那么您可以将tc.id更改为tci.id。当我添加限制1时,它只返回一个结果。我希望它为每个临时卡行返回1个图像。该查询在没有限制的情况下工作得很好,但在这种情况下,它返回每个临时卡行的所有图像。@salmanhijazi Ok,我不太明白。你的意思是你想为每个tc.id按名称ASC排序第一个条目吗?假设temp_card表中有10行符合我的性别和城市条件。对于每一行,temp_card_images表中有10行。我希望查询返回temp_card表中的所有10行,但是temp_card_images表中的每一行只返回1行。这有意义吗?如果我只想从temp_card_image表中选择一行怎么办?对于temp_card表中的每个结果,只有一个图像?@salmanijazi如果您只需要一个图像,则添加一个限制。我还向SELECT子句中添加了表别名,这将消除该错误。如果您想要临时卡图像id,那么您可以将tc.id更改为tci.id。当我添加限制1时,它只返回一个结果。我希望它为每个临时卡行返回1个图像。该查询在没有限制的情况下工作得很好,但在这种情况下,它返回每个临时卡行的所有图像。@salmanhijazi Ok,我不太明白。你的意思是你想为每个tc.id按名称ASC排序第一个条目吗?假设temp_card表中有10行符合我的性别和城市条件。对于每一行,temp_card_images表中有10行。我希望查询返回temp_card表中的所有10行,但是temp_card_images表中的每一行只返回1行。这有意义吗?