Php MySQL内部联接表从唯一表中提供重复值
您好,我在InnoDB引擎-->MySQL和PHP中有两个具有PK-->FK关系的表 第一个表是'Properties'和第二个表之间的关系是one--->many 是“属性图像”的表。第一个表中的每一行都是唯一的,但第二个表中的每一行都是唯一的 第一个表的每一行在第二个表中都有许多行,我如何**从中选择唯一的行 第一个表和第二个表中关于第一个表的所有信息这是我的查询:Php MySQL内部联接表从唯一表中提供重复值,php,mysql,Php,Mysql,您好,我在InnoDB引擎-->MySQL和PHP中有两个具有PK-->FK关系的表 第一个表是'Properties'和第二个表之间的关系是one--->many 是“属性图像”的表。第一个表中的每一行都是唯一的,但第二个表中的每一行都是唯一的 第一个表的每一行在第二个表中都有许多行,我如何**从中选择唯一的行 第一个表和第二个表中关于第一个表的所有信息这是我的查询: SELECT DISTINCT properties.PropertyName, prope
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
在这个结果中,PropertyName和PropertyStatus被重复,但我想要一个
唯一,因为它存储在第一个表中propertyName和PropertyStatus
属于第一个表。Propertyid和PropertyImagepath属于第二个表。不幸的是,联接将为表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