2015-01-14 32 views
0

所以在我的SQL表中我有這種情況。MySQL - 檢索數據沒有重複

一個項目(具有唯一ID)可以將照片與其相關聯。

我需要獲取一個項目上的所有信息以及兩個照片中的一個記錄(或更精確的行)。

我當前的查詢是:

SELECT ultrait_wpl_properties.id, location1_name, location3_name, location4_name, field_312, field_42, post_code, lot_area, living_area, price, bedrooms, bathrooms, field_308, googlemap_lt, googlemap_ln, street, street_no, ultrait_wpl_property_types.name, property_title, build_year, add_date, ultrait_wpl_items.item_name 
    FROM ultrait_wpl_properties 
    JOIN ultrait_wpl_property_types ON ultrait_wpl_properties.property_type = ultrait_wpl_property_types.id 
    JOIN ultrait_wpl_items ON ultrait_wpl_properties.id = ultrait_wpl_items.parent_id 
    ORDER BY ultrait_wpl_properties.id "; 

從該查詢我得到的一切我需要的信息和圖片。我目前的做法的問題是,如果有多個圖片,當我的查詢執行時,我會得到一個重複的行。有沒有解決的辦法?

我問我後來使用這些數據並將其導出到一個XML文件,但因爲這個查詢返回每張照片的重複記錄。具有一個項目但5張圖片的XML文件將返回5個相同的節點,但具有不同的圖像URL。

+0

你能告訴我們你有什麼和你期待的結果嗎? – Naruto

+0

記錄*實際*是否重複,或者是「ultrait_wpl_items.item_name」中的值在每種情況下都不相同? (我猜這是) – CD001

+0

你想要什麼結果?幾張照片中只有一張?或者將它們列在一行中?還是隻有兩個?哪兩個? –

回答

0

如下

SELECT DISTINCT 
    ultrait_wpl_properties.id, 
    location1_name, 
    location3_name, 
    location4_name, 
    field_312, 
    field_42, 
    post_code, 
    lot_area, 
    living_area, 
    price, 
    bedrooms, 
    bathrooms, 
    field_308, 
    googlemap_lt, 
    googlemap_ln, 
    street, 
    street_no, 
    ultrait_wpl_property_types.name, 
    property_title, 
    build_year, 
    add_date, 
    ultrait_wpl_items.item_name 
FROM 
    ultrait_wpl_properties 
INNER JOIN 
    ultrait_wpl_property_types ON 
     ultrait_wpl_properties.property_type = ultrait_wpl_property_types.id 
INNER JOIN 
    ultrait_wpl_items ON 
     ultrait_wpl_properties.id = ultrait_wpl_items.parent_id 
ORDER BY 
    ultrait_wpl_properties.id 
+0

謝謝你的嘗試,但我認爲我必須重新構思我的想法,因爲我需要所有的領域,但我也需要每個圖像。這是一個乏味,我知道 – Blorange2

+0

'ultrait_wpl_items.item_name'上的值隨着每條記錄而變化,所以它們**已經是不同的記錄 - 這個答案實際上並不能解決問題。 – CD001

0

你可以試試這個重寫查詢。

SELECT ultrait_wpl_properties.id, 
      (all those other columns), 
      GROUP_CONCAT(ultrait_wpl_items.item_name) items 
    FROM ultrait_wpl_properties 
    INNER JOIN ultrait_wpl_property_types 
       ON ultrait_wpl_properties.property_type = ultrait_wpl_property_types.id 
    LEFT JOIN ultrait_wpl_items 
       ON ultrait_wpl_properties.id = ultrait_wpl_items.parent_id 
    GROUP BY ultrait_wpl_properties.id 

它使用notorious non-standard GROUP BY extension in MySQL,所以它可能會產生一些奇怪的結果。但是,它會爲每個id產生一個以逗號分隔的item_name列的列表。

LEFT JOIN使其正確地爲id值正常工作缺乏任何圖像。

+0

這很好,但有沒有辦法將它們分開一點? – Blorange2