Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 抑制重复列_Php_Mysql_Database - Fatal编程技术网

Php 抑制重复列

Php 抑制重复列,php,mysql,database,Php,Mysql,Database,我有两张桌子: b点->所有房屋表 图像->房屋图像表(每户最多3张) 以下是我的MySQL连接查询,用于获取房屋信息及其图像: SELECT bpoint.*, bimages.iURL FROM bpoint, bimages WHERE bpoint.pointID = bimages.pointID AND bimages.pointID = '$tocka' 由于图像行比房屋行多(总是只有一个房屋结果和1-3个图像结果),是否有办法删除每个图像

我有两张桌子:

  • b点
    ->所有房屋表
  • 图像
    ->房屋图像表(每户最多3张)
以下是我的MySQL连接查询,用于获取房屋信息及其图像:

SELECT 
    bpoint.*, bimages.iURL
FROM
    bpoint,
    bimages
WHERE
    bpoint.pointID  = bimages.pointID
AND bimages.pointID = '$tocka'

由于图像行比房屋行多(总是只有一个房屋结果和1-3个图像结果),是否有办法删除每个图像附带的房屋结果双倍?

通过使用
分组方式和
加入
可以得到您想要的结果

SELECT bpoint.*, bimages.url FROM bpoint
LEFT JOIN bimages 
       ON bpoint.id = bimages.pointId
GROUP BY bpoint.id;

不,除非使用两个单独的查询,否则没有办法做到这一点。如果有办法的话,你会期望第一栋房子的第二张图片的结果集是什么样子


无论如何,我在这里要做的是在查询中添加一个
orderby
子句,以确保来自同一房子的所有图像都是按顺序排列的。然后,在PHP显示循环中,如果您已经从上一行打印了房屋信息,您只需忽略房屋信息。

没有得到问题,如果一张图像中有多个房屋,您想从bpoint表中删除结果吗?我猜您希望将其用于显示,但您仍然需要该行,但不想重复房屋信息。。对吗?@randy对!我怎样才能做到这一点呢?也许一个标题“抑制重复列”会更好…我同意这个解决方案是PHP的努力。但是,在oracle中,您可以使用滞后函数,或者使用用户定义的聚合函数来抑制这些值。(不确定这是否会转化为mysql)@Randy我不知道Oracle,但我不相信mysql中存在这样的东西。在Oracle解决方案中,重复行的
bpoint.*
外观如何?只有一堆
NULL
s?是-通常您会用NULL替换重复值。