簡體   English   中英

MySQL從多表中獲取信息

[英]MySQL pulling information from multiple table issue

我正在嘗試從2個不同的表中訪問信息,並試圖檢索該信息,但是所有這些操作都多次拉入用戶信息,以等待表tbl_fruits中列出多少個水果。

希望能夠一次顯示用戶信息並同時提取與該用戶關聯的水果數量。

2個表:tbl_users:用戶標識名姓

tbl_fruits:用戶ID水果

在示例代碼中,用戶ID 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
        )

)

如下更改查詢:

{    $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以獲得最佳性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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