簡體   English   中英

PHP MySQL的聯接結果集重復數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM