2012-07-13 62 views
3

我有大約5個共同字段爲「userid」的表我想統計所有這些表中不同的用戶ID。某些用戶ID可能會出現在這些表中的大約2箇中。但我想統計5個表中的不同用戶ID的UNION。我能夠用ff代碼在一個表中統計不同的用戶標識。我希望能夠從所有表格中計數。從多個表中統計不同的用戶ID

//just count the nuber of distict userids in table1 
    $query2 = ("SELECT COUNT(DISTINCT userid) FROM table1"); 
    $result2 = mysql_query($query2) or die(mysql_error()); 
    $row2 = mysql_fetch_row($result2); 
    echo "Number of users in table 1 = ".$row2[0] ."<br />"; 


**Table 1** 
Id userid name adresss 

**Table 2** 
Id Title Sex userid 

**Table 3** 
Id userid amount 

**Table 4** 
Id price promotion userid productid 

**Table 5** 
Id userid category tax weight 
+0

這看起來像一個標準的表格設置......你爲什麼需要統計所有這些表格?人們會假設你有一個表在某個地方產生了唯一的'userId',你可以從中得到數(可能是'Table 1')。 – 2012-07-13 15:21:46

回答

7

使用UNION

標準UNION,相反有UNION ALL,將結果集刪除重複值。您的發言看起來就像

SELECT COUNT(*) 
FROM  (
      SELECT UserID FROM Table1 
      UNION SELECT UserID FROM Table2 
      UNION SELECT UserID FROM Table3 
      UNION SELECT UserID FROM Table4 
      UNION SELECT UserID FROM Table5 
     ) AS UserIDs 

From w3schools

UNION操作在默認情況下只選擇不同的值。要允許 重複值,請使用UNION ALL。

+0

感謝列文,它工作得很好 – astymore 2012-07-13 16:08:04

+0

請看看這個棘手的一個對我來說http://stackoverflow.com/questions/11503321/select-and-count-distinct-active-users-by-platform-and-compare-if -they-exist- – astymore 2012-07-18 10:26:21

+0

@astymore - 我剛剛做了,讓我們知道,如果這不是你想到的。 – 2012-07-18 10:40:28

相關問題