2014-11-06 25 views
0
table1 
-------------- 
| sn | class | 
-------------- 

table2 
---------------- 
| id | student | 
---------------- 

所有的表計算行是intsn是表1是與學生在表2 snid是自動增加。插入數據表2學生列時是一樣的sn表1如何在具有特定屬性的另一個表

現在我要選擇在表2 student但只有那些class table1中是「3」 我的語法是這樣;

$count = mysql_query(SELECT student from table2 whose class in table1 =3) 

,這樣我可以說

$quantity = mysql_num_rows($count) 

現在算來我的問題是,如果SQL也有這樣的,其關鍵字,或者我如何去這個問題。

$count = mysql_query(SELECT student from table2 whose class in table1 =3) 
+0

您可以爲此做一個連接,但首先讓我注意您的問題是不可讀的。你可以更好地編輯和重寫它。 – albanx 2014-11-06 08:44:35

+0

是否在表1中有任何類別的列 – 2014-11-06 08:48:53

+0

如果我問的話,你不指望我的問題自己回答,那是因爲我不知道。所以你可以嘗試一下(從英文翻譯成PHP),就像其他人一樣。 – Ekumahost 2014-11-06 12:32:43

回答

0

你應該加入這兩個表和你的結果限制爲那些具有table1.class = 3

SELECT 
    student 
FROM 
    table2 a 
    JOIN table1 b ON (a.student = b.sn) 
WHERE b.class = 3 

如果你想有一個數,您還可以通過使用聚合函數

做到這一點通過SQL
SELECT 
    COUNT(student) 
FROM 
    table2 a 
    JOIN table1 b ON (a.student = b.sn) 
WHERE b.class = 3 
+0

完美的解決方案 – Ekumahost 2014-11-06 12:30:22

1

您需要加入表格才能正確過濾結果。

(1)這會給你的學生人數爲3類

$count = mysql_query(
    'SELECT COUNT(t2.student) 
    FROM table2 t2 
    INNER JOIN table1 t1 
    ON t1.sn = t2.student 
    AND t1.class = 3' 
); 

(2)這會給你的所有課程和學生各自的數量。

$count = mysql_query(
    'SELECT t1.class, COUNT(t2.student) 
    FROM table2 t2 
    INNER JOIN table1 t1 
    ON t1.sn = t2.student 
    GROUP BY t1.class 
    ORDER BY t1.class' 
); 

(3)這會給你所有的課程和學生名單。

$list = mysql_query(
    'SELECT t1.class, GROUP_CONCAT(t2.student SEPARATOR ',') 
    FROM table2 t2 
    INNER JOIN table1 t1 
    ON t1.sn = t2.student 
    GROUP BY t1.class 
    ORDER BY t1.class' 
); 
+0

在第二個和第三個示例中缺少一個報價。 – 2014-11-06 08:55:39

+0

感謝您指出,現在修復。 – Paul 2014-11-06 08:56:10

+0

不客氣。 – 2014-11-06 08:56:32

相關問題