2012-08-14 79 views
0

有點背景。我正在構建一個拍賣人項目(PHP/MySQL),其中存在未知數量的要上傳的圖像。要上傳的圖像數量由用戶根據可用照片的數量來定義。在線上傳是沒有問題的。我可以看到表格中的所有重要信息。從其中一個表中重複值的兩個表中進行SQL查詢

我有兩個相關的表: 1)屬性欄(米什/醪) 2)圖片(三列:images_id,images_url,images_entry_id)

的images_entry_id指獨特properties.property_id。當我上傳幾張圖片時,問題出在 ;有一個唯一的ID,URL和他們有相同的images_entry_id,所以我可以將它們引用到屬性表。所以當我嘗試一個內部連接時,我根據圖像數量從屬性表中獲得了幾個相同的輸出。希望這解釋我的意思?

我的查詢:

$sql = "SELECT * FROM properties INNER JOIN images 
       ON properties.prop_id=images.images_entry_id ORDER BY properties.prop_id DESC"; 

所以基本上,如果有三個圖像爲一個PROP_ID,我再從性能表中得到的結果相同的三個輸出!那裏!有任何想法嗎?數據庫佈局是否差,或者它只是一個簡單的查詢,盯着我的臉?

+0

你想從你的查詢中得到什麼呢? – 2012-08-14 18:49:04

+0

我想從屬性表中輸出一個實例,同時從圖像表中輸出任何相關的圖像。該鏈接是屬性表中唯一的prop_id和圖像表中的images_entry_id。 – 2012-08-14 18:59:57

+0

然後,你可能會更好地做它作爲兩個單獨的查詢。如果我不理解你,你能張貼一些樣本數據和輸出嗎? – 2012-08-14 19:00:48

回答

0

確定,這將工作:

$sql = "SELECT DISTINCT properties.* FROM properties 
INNER JOIN images ON (properties.prop_id=images.images_entry_id) 
ORDER BY properties.prop_id DESC"; 

或這一個

$sql = "SELECT properties.* FROM properties 
WHERE EXISTS (SELECT * FROM images WHERE properties.prop_id=images.images_entry_id) 
ORDER BY properties.prop_id DESC"; 
+0

建議組將其限制爲一個屬性輸出,但每個查詢只能輸出一個圖像?如果我堅持這樣的foreach循環︰foreach($ q as $ result){echo「「;}我只得到一個圖像,而有多個圖像 – 2012-08-14 19:28:39

+0

感謝您花時間。我得到這兩個代碼上面的錯誤:注意:未定義的屬性:stdClass :: $ images_url在... – 2012-08-14 21:05:45

+0

與查詢無關。它與您的代碼。搜索並找到$ images_url – Gustonez 2012-08-14 21:48:48

0

您預期的結果不會來連接表的一個查詢,則需要單獨查詢每個表。

+0

我認爲它會必須是兩個單獨的查詢有沒有一種特殊的方式可以將兩個查詢協調爲一個輸出?謝謝。 – 2012-08-14 19:31:36

+0

不是我知道,至少不是直接。您可以添加一箇中間步驟,將它們合併PHP,但2個查詢仍然需要運行並單獨返回到php。 – invertedSpear 2012-08-14 19:48:51

+0

將它放棄。 – 2012-08-14 21:06:17