从多个表mySQL获取数据

时间:2014-05-28 18:45:11

标签: php html mysql sql

我有3张桌子:

男性;使用以下列:image_id,filename 女性; image_id,filename 情侣; imagemale(对应于男性表中的image_id),imagefemale,投票

基本上用户会随机显示男女照片,他们通过投票赞成或不投票决定他们是不是一个好的比赛,并且表格"情侣"通过投票和排名恢复所有这一切。 我试图显示前25个投票数,但是为了显示图片,我需要文件名而不是图片ID,这就是我所拥有的。

我该怎么办?这是top25页面的语法:

include('mysql.php');

// Get the top25
$results = mysql_query("SELECT * FROM couples ORDER BY votes DESC LIMIT 0,25");
while($row = mysql_fetch_object($results)) $top_ratings[] = (object) $row;


// Close the connection
mysql_close();

然后在html中:

<h2>Top 25</h2>
<center>
   <table>
      <tr>
         <td>
      <tr>
         <td>
            <?php foreach($top_ratings as $key => $filename) : ?>
         <td valign="top"><img src="imagesmale/<?=$filename->imagemale?>" /></td>
         <?php endforeach ?>
         </td>
         <td>
            <?php foreach($top_ratings as $key => $filename) : ?>
         <td valign="top"><img src="imagesmale/<?=$filename->imagefemale?>" /></td>
         <?php endforeach ?>
         </td>
      </tr>
      </td>
      </tr>
   </table>
</center>

谢谢!

1 个答案:

答案 0 :(得分:0)

你真的只需要做#2,但我强烈建议你做#1。

  1. 将表重组为只有一个名为&#34; people&#34;的表。此表将包含另一列&#34; gender&#34;,很可能是int(1)
  2. 要从id中获取图像文件名,您需要INHER JOIN来自couple表的people表(使用旧结构):
  3. SELECT 
        Men.filename AS manfile ,
        Women.filename AS womanfile,
        couples.votes
    FROM couples
    INNER JOIN Men on couples.imagemale = Men.image_id
    INNER JOIN Women on couples.imagefemale = Women.image_id
    ORDER BY votes DESC
    LIMIT 25