SQL查询来自两个表,其中一个表中包含重复值

时间:2012-08-14 18:46:21

标签: php mysql sql join

一点背景。我正在建立一个拍卖师项目(PHP / MySQL),其中有大量图像需要上传。要上载的图像量由用户根据可用照片的数量来定义。在线上传它们没有问题。我可以在表格中看到所有重要的信息。

我有两个相关的表格:

  1. 属性(Mish / Mash of columns)
  2. 图像(三列:images_id,images_url,images_entry_id)
  3. images_entry_id指的是唯一的properties.property_id。问题在于 当我上传几张图片;有一个唯一的id,url,它们有相同的images_entry_id,所以我可以将它们引用到Properties表中。因此,当我尝试内连接时,我会从属性表中获得几个相同的输出,具体取决于图像的数量。希望这能解释我的意思吗?

    我的查询:

    $sql = "SELECT * FROM properties INNER JOIN images
                    ON properties.prop_id=images.images_entry_id ORDER BY properties.prop_id DESC";
    

    所以基本上,如果一个prop_id有三个图像,那么我从属性表中得到三个相同输出的输出!那里!有任何想法吗?数据库布局是否很差,或者只是一个简单的查询,让我盯着我看?

2 个答案:

答案 0 :(得分:0)

好的,这将有效:

$sql = "SELECT DISTINCT properties.* FROM properties 
INNER JOIN images ON (properties.prop_id=images.images_entry_id) 
ORDER BY properties.prop_id DESC";

或者这个

$sql = "SELECT properties.* FROM properties 
WHERE EXISTS (SELECT * FROM images WHERE properties.prop_id=images.images_entry_id) 
ORDER BY properties.prop_id DESC";

答案 1 :(得分:0)

您的预期结果不会来自对连接表的单个查询,您需要独立查询每个表。