$sql="select * from table(A)"; $rs=mysql_query($sql,$conn); while($row=mysql_fetch_row($rs)) { $sql2="select * from table(B) where id=$row[1]"; $rs2=mysql_query($sql2,$conn); $row2=mysql_fetch_row($rs2); echo " 作者姓名:".$row[0]."作品名:".$row2[0]."作品内容:".$row2[2]; }
select 表A.作者姓名,表B.作品名称 from 表A,表B where 表A.作者ID=表B.作者ID group by 作者姓名
如果你建在一个表里,可以减少一次SQL查询,但我想效果应该不明显!
$sql = "SELECT b.content, b.name, a.author FROM b LEFT JOIN a ON b.author_id = a.author_id order by b.author_id";
$sql = "$sql = "SELECT b.content, b.name, a.author FROM b LEFT JOIN a ON b.author_id = a.author_id order by b.author_id"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)) { $arrTemp[$row['author']][] = $row; }
所有的作者及其作品列表作品全部都在b表,直接查b表,做为主表,然后按照作者id排序 然后因为作者姓名在a表,通过作者id关联,所以用left join on连接到a表,作为副表,这样姓名就得到了 或者,用子查询,select b.书名,(select a.作者姓名 from a表 where a.作者id=b.作者id ) from b order by b.作者id
select a.name,b.context from A a,B b where a.id=b.id
$sql="select * from table(A)";
$rs=mysql_query($sql,$conn);
while($row=mysql_fetch_row($rs))
{
$sql2="select * from table(B) where id=$row[1]";
$rs2=mysql_query($sql2,$conn);
$row2=mysql_fetch_row($rs2);
echo " 作者姓名:".$row[0]."作品名:".$row2[0]."作品内容:".$row2[2];
}
$sql = "SELECT b.content, b.name, a.author FROM b LEFT JOIN a ON b.author_id = a.author_id order by b.author_id";
$sql = "$sql = "SELECT b.content, b.name, a.author FROM b LEFT JOIN a ON b.author_id = a.author_id order by b.author_id";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
$arrTemp[$row['author']][] = $row;
}
然后因为作者姓名在a表,通过作者id关联,所以用left join on连接到a表,作为副表,这样姓名就得到了
或者,用子查询,select b.书名,(select a.作者姓名 from a表 where a.作者id=b.作者id ) from b order by b.作者id
用数组好像可以,不过我用smarty,传过去的好像好复杂啊,还没绕出来