目前,我有两个 MySQL 表。
第一个表存储朋友和他的图片之间的关系。
表格1
id | pic_id | friend_id
----------------------------
0 | 123 | 84589
1 | 290 | 11390
2 | 884 | 84589
3 | 456 | 84589
4 | 123 | 11111
5 | 456 | 22222
表 2
第二个表存储有关图片的更多信息...
id | pic_id | title | color | detail
----------------------------------------------
0 | 123 | hello | black | brush
1 | 124 | world | red | paint
2 | 884 | sample | green | star
我使用 JOIN 来获取我需要的信息...
但是,如果我想使用上述 SQL 匹配的 pic_id 并找到具有相同 pic_id 的其他朋友 ID 怎么办?
例如,上面的 SQL 命令将给我行 0、2 和 3,pic_id 为 123、884、456。我应该使用什么 SQL 命令来循环这些 pic_id 并获取关联的friend_id?我想以 11111 为 pic_id 123 和 22222 为 pic_id 456 结束。
我已经使用以下代码来完成上述操作。它看起来效率不高,而且速度很慢。
$sql = "SELECT b.title, b.color, b.detail
FROM table1 a INNER JOIN table2 b
on a.pic_id = b.pic_id
WHERE friend_id = 84589";
$res = mysqli_query($link,$sql);
if($res){
while ($rec = mysqli_fetch_assoc($res)){
$pic_id.=$rec['pic_id'].",";
$arr[] = $rec;
}
}
$each_id = explode(',',$pic_id);
foreach($each_id as $key => $value){
if ($value){
$next_sql = "SELECT friend_id FROM table1 WHERE pic_id=".$value;
$next_res = mysqli_query($link,$next_sql);
if ($next_res){
while($next_rec = mysqli_fetch_assoc($next_res)){
//do things
}
}
}
}
对不起,如果这不清楚。请让我知道,我会澄清。
非常感谢所有帮助!