2012-09-03 77 views
1

我有兩個表:禁止重複列

  • bpoint - >表房子的圖像(最大3%的房子) - >所有房屋
  • images的表。

這裏是我的MySQL連接查詢來獲取房屋信息和它的圖像:由於有更多的圖像比排房子行(有永遠只有一個房子結果和1-3圖像

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

結果),有沒有一種方法可以放棄每個圖像附帶的房子結果雙打?

+1

沒有得到這個問題,你想從bpoint表中刪除結果,如果對於一個單一的圖像多房子在那裏? – amitchhajer

+0

我猜你想要這個顯示器的建議,你仍然想要的行,但不想重複房子的信息..正確嗎? – Randy

+0

@randy正確!我怎麼能做到這一點? –

回答

1

沒有,有沒有辦法做到這一點,除非你使用兩個單獨的查詢。如果有辦法,你會期望結果集看起來像第一宮的第二張圖片嗎?

無論如何,我在這裏要做的是在查詢中添加一個ORDER BY子句,以確保來自同一家的所有圖像都是按順序排列的。然後,在PHP顯示循環中,如果您已經從前一行中打印出來,則只需忽略房屋信息。

+0

我同意這個解決方案作爲PHP的努力。然而 - 在oracle中,您可以使用LAG函數,或者使用用戶定義的集合函數來抑制值。 (不知道這是否意味着MySQL) – Randy

+0

@Randy我不知道甲骨文,但我不相信這樣的事情存在於MySQL中。在你的Oracle解決方案中,'bpoint。*'看起來像重複行嗎?只是一堆'NULL'? – bfavaretto

+0

是的 - 通常情況下,您會用null替換重複的值。 – Randy

1

通過使用GROUP BYJOIN你可以得到你正在尋找的結果;

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

http://sqlfiddle.com/#!8/5d1fd/3/0