MySQL从多个表中提取信息的问题


MySQL pulling information from multiple table issue

我试图访问两个不同表中的信息并检索信息,但在tbl_fruits表中列出多少水果之前,它多次拉入用户信息。

希望能够显示一次用户信息并同时提取与用户相关联的水果数量。

2张表:tbl_users:userid名字姓氏

tbl_fruits:userid水果

在示例代码中,userID 4在tbl_fruit中具有与他相关联的3个果实。从下面的结果中可以看到,用户信息被多次列出。我如何重写代码,使用户信息被提取一次,结果显示三次。

$clientID = "4";
try 
{    $stmt = $dbcon1 ->query("SELECT 
                tbl_fruits.fruit,
                tbl_users.userid,
                tbl_users.firstname,
                tbl_users.lastname
               FROM tbl_users
                 LEFT JOIN tbl_fruits 
               ON tbl_fruits.userid = tbl_users.userid     
                    WHERE  tbl_users.userid = '$clientID' ");                
    $testArray = $stmt->fetchAll(PDO::FETCH_ASSOC);            
} 
catch(PDOException $e) 
{    echo $e->getMessage(); }
echo '<pre>';
print_r($testArray);
echo '</pre>'; 

结果

array
(
    [0] => Array
        (
            [fruit] => Apple
            [userid] => 4
            [firstname] => John
            [lastname] => Smith
        )
    [1] => Array
        (
            [fruit] => Orange
            [userid] => 4
            [firstname] => John
            [lastname] => Smith
        )
    [2] => Array
        (
            [fruit] => Banana
            [userid] => 4
            [firstname] => John
            [lastname] => Smith
        )
)

更改查询如下:

{    $stmt = $dbcon1 ->query("SELECT 
                count(tbl_fruits.userid) 
                tbl_users.userid,
                tbl_users.firstname,
                tbl_users.lastname
               FROM tbl_users
                 LEFT JOIN tbl_fruits 
               ON tbl_fruits.userid = tbl_users.userid     
                    WHERE  tbl_users.userid = '$clientID' 
                    GROUP BY tbl_users.userid "); 

count(tbl_fruits.userid)部分计算具有该行值tbl_fruits.userid的唯一行的数量,而GROUP BY tbl_users.userid部分消除重复行。

请确保为tbl_users.useridtbl_fruits.userid设置索引以获得最佳性能。