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张)图像
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替换重复值。