Php MySQL内部联接表从唯一表中提供重复值

Php MySQL内部联接表从唯一表中提供重复值,php,mysql,Php,Mysql,您好,我在InnoDB引擎-->MySQL和PHP中有两个具有PK-->FK关系的表 第一个表是'Properties'和第二个表之间的关系是one--->many 是“属性图像”的表。第一个表中的每一行都是唯一的,但第二个表中的每一行都是唯一的 第一个表的每一行在第二个表中都有许多行,我如何**从中选择唯一的行 第一个表和第二个表中关于第一个表的所有信息这是我的查询: SELECT DISTINCT properties.PropertyName, prope

您好,我在InnoDB引擎-->MySQL和PHP中有两个具有PK-->FK关系的表

第一个表是'Properties'和第二个表之间的关系是one--->many

是“属性图像”的表。第一个表中的每一行都是唯一的,但第二个表中的每一行都是唯一的

第一个表的每一行在第二个表中都有许多行,我如何**从中选择唯一的行

第一个表和第二个表中关于第一个表的所有信息这是我的查询:

SELECT DISTINCT properties.PropertyName, 
                properties.PropertyStatus, 
                propertyimages.PropertyImageID, 
                propertyimages.ImagePath 
FROM properties 
   INNER JOIN propertyimages 
      ON properties.PropertyImageID=propertyimages.PropertyImageID 
     AND propertyimages.PropertyImageID=8;
结果如下:

PropertyName PropertyStatus Propertyid property Image Path Appartment For Lease 8 upload/hydrangeas.jpg Appartment For Lease 8 upload/jelsh.jpg Appartment For Lease 8 upload/penguins.jpg Appartment For Lease 8 upload/tulips.jpg PropertyName PropertyStatus Propertyid属性映像路径 租赁公寓8上传/hydangeas.jpg 租赁公寓8上传/jelsh.jpg 租赁公寓8上传/penguins.jpg 租赁公寓8上传/tulips.jpg 在这个结果中,PropertyNamePropertyStatus被重复,但我想要一个

唯一,因为它存储在第一个表中propertyNamePropertyStatus


属于第一个表。PropertyidPropertyImagepath属于第二个表。

不幸的是,联接将为表2中找到的每个元素创建一条记录,其中第一个表中有一个匹配的父元素(id 8)

您可以在第一个表字段上使用id为8的GROUP,但可能无法获得所需的所有结果,因为它将仅获取第一个图像

您是否可以重组您的流程,以便在涉及到图像(及其显示)时,您只需运行一个查询即可获得与属性8相关的所有图像

您可以始终使用嵌套查询(假定您希望在页面上显示属性的图像等)


我可能有点忘记了FK方法,所以如果这里也给我上了一课的话,我很想听听您的输入。

您离解决方案只有一步之遥,您只需要从第二个表中进行选择,然后再从第一个表中进行选择,这样您就可以将所有结果匹配

SELECT DISTINCT properties.PropertyName, 
            properties.PropertyStatus, 
            propertyimages.PropertyImageID, 
            propertyimages.ImagePath 
FROM propertyimages 
   INNER JOIN properties  
     ON propertyimages.PropertyImageID = properties.PropertyImageID
     AND propertyimages.PropertyImageID=8;

您可以通过以下方式实现这一点。但我也认为,最好提出两个问题。这没什么错

SELECT DISTINCT properties.PropertyName, 
                properties.PropertyStatus, 
                propertyimages.PropertyImageID, 
                GROUP_CONCAT(propertyimages.ImagePath) 
FROM properties 
   INNER JOIN propertyimages 
      ON properties.PropertyImageID=propertyimages.PropertyImageID 
      AND propertyimages.PropertyImageID=8;
GROUP BY propertyimages.PropertyImageID

如果编辑中不清楚,那么在公共论坛或问答网站中键入大写字母是不合适的。我强烈建议使用编辑器所做的作为未来的示例。祝你好运!:)这就是JOIN的工作原理。你想要实现什么?每个属性都有几个图像,当然它会给你所有的条目…我想给我PropertyName和PropertyStatus唯一的,但在上面的重复中,我如何在php中使用查询:$query=mysql\u query(“从属性左侧外部选择properties.PropertyName、properties.PropertyStatus、propertyimages.PropertyImageID、propertyimages.ImagePath在属性上连接propertyimages。PropertyImageID=propertyimages.PropertyImageID和propertyimages.PropertyImageID=$property”)或死亡(mysql\U错误();使用
groupby
distinct
我重新构造了,但在执行此结果时得到:警告:mysql_num_rows()参数1应为resource,字符串在第15行的C:\xampp\htdocs\PropertyImages\DisplayImages.php中给出,这意味着我的查询错误,导致查询无效。请确保它与您的数据库结构匹配,并且我没有弄乱您使用的字段。我必须始终注意区分大小写和/或打字错误,因为我的手指是错的我想问题是这部分的PropertyImageID='“$propertyRow['PropertyImageID']”“;。。。。我不得不相信你的话,因为我看不到你修改过的代码,或者你的数据库。。但基本上,您从query1获取属性ID,并将其用作query2上的搜索条件,以获取您的images@user2279037抱歉,我不确定您想从数据库中检索什么query@user2279037你能给我解释一下吗?
SELECT DISTINCT properties.PropertyName, 
            properties.PropertyStatus, 
            propertyimages.PropertyImageID, 
            propertyimages.ImagePath 
FROM propertyimages 
   INNER JOIN properties  
     ON propertyimages.PropertyImageID = properties.PropertyImageID
     AND propertyimages.PropertyImageID=8;
SELECT DISTINCT properties.PropertyName, 
                properties.PropertyStatus, 
                propertyimages.PropertyImageID, 
                GROUP_CONCAT(propertyimages.ImagePath) 
FROM properties 
   INNER JOIN propertyimages 
      ON properties.PropertyImageID=propertyimages.PropertyImageID 
      AND propertyimages.PropertyImageID=8;
GROUP BY propertyimages.PropertyImageID