2016-12-15 53 views
2

這裏是數據庫表:PHP/MySQL的計數訂單

Users

Order_items

$sql[2] = "SELECT u.* , oi.* , COUNT(oi.user_id) AS count 
      FROM users u, order_items oi 
      WHERE u.id=oi.user_id "; 
$result3= mysqli_query($conn,$sql[2]) or die(mysqli_error()); 
if (mysqli_num_rows($result3) > 0) { 
    while ($record = mysqli_fetch_array($result3)) { 
     echo $record['count']; 
    } 
} 

我想算多少纔能有充分的用戶。例如:像托馬斯有3個命令,但我的代碼是寫4,我想寫Thomas(3),Gracian(1)。任何想法如何解決它?

+0

見http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve - 對於什麼似乎對我來說是一個非常簡單的SQL查詢 – Strawberry

+0

請使用格式化文本,而不是圖像。另外,使用該樣本數據,預期的結果是什麼? – jarlh

+0

結果是:4(即所有,我認爲它的行數) –

回答

0

使用此查詢:

SELECT u.id, 
     COUNT(oi.user_id) AS orderCount 
FROM users u 
LEFT JOIN order_items oi 
    ON u.id = oi.user_id 
GROUP BY u.id 

我們從order_items表數user_id的原因是因爲該商品的特定用戶沒有訂單的邊緣情況。在這種情況下,我們要確保他的計數顯示爲零。 COUNT函數忽略NULL,這就是我們想要的。

+0

草莓:downvote的原因? –

+0

因爲你在計算錯誤的東西。 – Strawberry

+0

@TimBiegeleisen此選擇有問題,導致結果是:3111 –

0

有使用子查詢來執行SQL查詢另一種方式:

SELECT id, email, address, name, (SELECT count(user_id) FROM order_items WHERE user_id = users.id) AS orderCount FROM users;

+0

以及如果我想從另一個表格(產品)添加一行,最新情況。想從產品表中找到ID,然後輸入p.ID = oi.product_id(order_items) –

+0

@FaragoRoland您想要什麼產品的屬性?它也數過嗎? – SaidbakR

+0

號我有另一個表(產品:ID,product_name,價格),我想要獲得數量(從order_items)*價格(從產品表)。例如:5 * 20 = 100(如5訂購商品*價格(20 /每件)) –