php mysql连接结果集重复数据

php mysql连接结果集重复数据,php,mysql,resultset,multiple-resultsets,Php,Mysql,Resultset,Multiple Resultsets,我已经阅读了几乎所有其他与我的问题相关的帖子,无法找到一个明确的答案——如果这个问题已经得到了回答,我道歉 基本上我有一个产品表和一个图像表,一个产品可以有很多图像。我的理解是,与运行多个查询相比,使用一个查询获取所有数据将具有更好的性能 我目前正在使用一个左连接查询,它工作得非常好,但对我来说似乎效率低下 我的结果集有很多重复数据(我知道这是我要求的),这是因为“产品”表包含50(ish)列,而“图像”表只有3列,因此我的结果集如下所示: P_ID P_NAME P_DESC

我已经阅读了几乎所有其他与我的问题相关的帖子,无法找到一个明确的答案——如果这个问题已经得到了回答,我道歉

基本上我有一个产品表和一个图像表,一个产品可以有很多图像。我的理解是,与运行多个查询相比,使用一个查询获取所有数据将具有更好的性能

我目前正在使用一个左连接查询,它工作得非常好,但对我来说似乎效率低下

我的结果集有很多重复数据(我知道这是我要求的),这是因为“产品”表包含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
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
I_ID是images表中的主键,是“products”表中的一列,这是表之间存在关系的地方

有些产品可能有10或15个图像,这些图像会将“产品”信息复制10或15次,对我来说,这似乎是错误的。在没有必要的时候有如此多的重复数据

我想我真正想问的是:这是最好的方法吗?还是我应该有两个查询:一个是根据产品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
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
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')
    )
);

但是我一辈子都无法解决如何像这样取回数据-请帮助

听起来你应该使用两个单独的查询。一个用于返回产品信息,另一个用于返回图像。否则,对于与之匹配的每个图像,您的查询将始终重复product表中的信息。只要在每个表中对
P\u ID
字段进行索引,性能就不应该成为问题