简单的SQL语句 - 我应该在这里加入3个表还是2个?

时间:2011-12-14 03:21:31

标签: php mysql sql

我是MySQL和php的新手,我正在绕着这个轴缠绕。我已经工作了几个小时,无法获得理想的结果。请帮忙?我开始的是:

$query = sprintf('select image_id, filename from images');
$result = mysql_query($query);
$images = array();
    while ($row = mysql_fetch_array($result)) {
    $id = $row['image_id'];
    $images[$id] = $row['filename'];
    echo $images[$id];
}

我有三张桌子:

  1. 提交 - submission_id,价格,说明
  2. images - image_id,filename,size
  3. imagsub - image_id,submission_id
  4. 上面的脚本将拉出数据库中的所有文件名和image_id。我需要将结果限制为与引用表中的submission_id匹配的图像行。我已经在sprintf函数中尝试了各种JOINS无济于事,现在我甚至无法通过简单的mysql_query获得我想要的结果。在我拔掉头发之前,有人可以让我走上正确的道路。我需要在这里加入所有三个表还是足以加入图像和imagsub表?我在一个名为$ item的变量中需要submission_id,该变量是从上一页中提取的,所以也许我根本不需要提交表,只需要来自imagsub的外键?

3 个答案:

答案 0 :(得分:0)

尝试:

select image_id, filename from images i
  join imagesub s on s.image_id = i.image_id
  where s.subbmision_id = $1;

您需要将$ 1参数设置为您在请求中收到的“$ item”值。

答案 1 :(得分:0)

尝试将此作为查询以获取所有这些

select s.submission_id, b.image_id, i.filename
from submissions s 
inner join imagsub b on b.submission_id = s.submission_id
inner join images i on i.image_id = b.image_id  

答案 2 :(得分:0)

你试过吗

select image_id, filename from images
  join imagsub on images.image_id = imagsub.image_id
  where imagesub.submission_id = YourID