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

时间:2013-06-30 21:01:15

标签: php mysql sql

我正在尝试从两个不同的表中访问信息并检索信息,但这一切都是如此,以便多次提取用户信息,等待表tbl_fruits中列出的水果数量。

喜欢能够一次显示用户信息并同时拉出与用户相关的多少水果。

2表: tbl_users:     用户身份     名字     名字

tbl_fruits:     用户身份     水果

在示例代码中,userID 4在tbl_fruit中有3个与他相关的成果。从下面的结果中可以看出,用户信息被多次列出。如何重写代码,以便用户信息被拉出一次,水果显示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
        )

)

1 个答案:

答案 0 :(得分:0)

更改您的查询,如下所示:

{    $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上添加索引以获得最佳效果。