[英]php mysql join results set repeating data
我已經閱讀了幾乎所有其他與我的查詢有關的帖子,找不到確切的答案-如果這個問題已經得到解答,我深表歉意。
基本上我有一個產品表和一個圖像表,一個產品可以有很多圖像。 據我了解,與運行多個查詢相比,使用單個查詢獲取所有數據將是更好的性能選擇。
我目前正在使用左聯接查詢,它可以很好地工作,但是對我來說似乎效率很低。
我的結果集中有很多重復的數據(我知道這就是我要的),這是由於“產品”表包含50個(ish)列,而“圖像”表只有3列,所以我的結果集看起來像這個:
P_ID P_NAME P_DESC -->(rest of product data) I_ID I_PATH I_THUMB
001 a.prod 'This is a product' 001-01 /a1.jpg /a1t.jpg
001 a.prod 'This is a product' 001-02 /a2.jpg /a2t.jpg
001 a.prod 'This is a product' 001-03 /a3.jpg /a3t.jpg
001 a.prod 'This is a product' 001-04 /a4.jpg /a4t.jpg
I_ID是圖像表中的主鍵,並且是“產品”表中的一列,這是表之間的關系所在。
某些產品可以具有10或15張圖像,這些圖像會將“產品”信息復制10或15次,對我來說這似乎是錯誤的。 不必要時具有大量重復數據。
我想我真正要問的是:這是最好的方法嗎?還是我應該有2個查詢1根據其ID查找產品,然后通過查詢1查找與產品相關的圖像?
我期望一對多的關系會返回如下內容:
P_ID P_NAME P_DESC -->(rest of product data) I_ID I_PATH I_THUMB
001 a.prod 'This is a product' 001-01 /a1.jpg /a1t.jpg
NULL NULL NULL 001-02 /a2.jpg /a2t.jpg
NULL NULL NULL 001-03 /a3.jpg /a3t.jpg
NULL NULL NULL 001-04 /a4.jpg /a4t.jpg
我還認為最好將多維數組找回,如下所示:
$resultset = array(
'P_ID'=>'001',
'P_NAME'=>'a.prod',
'P_DESC'=>'This is a product'
(rest of product data)
'IMAGES'=>array(
[0] => Array(
'I_ID'=>'001-01',
'I_PATH'=>'/a1.jpg',
'I_THUMB'=>'/a1t.jpg')
[1] => Array(
'I_ID'=>'001-02',
'I_PATH'=>'/a2.jpg',
'I_THUMB'=>'/a2t.jpg')
[2] => Array(
'I_ID'=>'001-03',
'I_PATH'=>'/a3.jpg',
'I_THUMB'=>'/a3t.jpg')
[3] => Array(
'I_ID'=>'001-04',
'I_PATH'=>'/a4.jpg',
'I_THUMB'=>'/a4t.jpg')
)
);
但我無法終生解決如何像這樣取回數據-請幫助
聽起來您應該使用2個單獨的查詢。 一種返回產品信息,另一種返回圖像。 否則,您的查詢將始終針對其匹配的每個圖像重復產品表中的信息。 只要在每個表中都為P_ID
字段建立索引,性能就不會成為問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.