2015-12-04 3 views
1

Как это сделать?php mysql sum, если существует в другой таблице

У меня есть эта таблица:

Table1

|--ID--|--Stars--|--Name--| 
| 1 | 3 | Pe | 
| 2 | 5 | Me | 
| 3 | 7 | Fe | 
|------|---------|--------| 

Table2

|--ID--|--Teams--|--Age---|--Name--| 
| 1 | A | 20 | Pe | 
| 2 | A | 20 | Me | 
| 3 | A | 20 | Pe | 
|------|---------|--------|--------| 

Я хочу, чтобы сумма звезд в Table1, где имя существует в Table2 и команды = A и Age = 20 , (3 + 5 = 8stars)

Я использую это, но как я могу считать только звезды, где имя в таблице 1 соответствует имени в таблице2?

$result = mysql_query("SELECT SUM(Stars) AS starsum FROM Table1 WHERE EXISTS (select * from Table2 WHERE Teams = 'A' AND Age = '20')"); 
$row = mysql_fetch_assoc($result); 
$antalstjernerhold = $row['starsum']; 
+0

Вам нужно узнать о [JOIN] (https://en.wikipedia.org/wiki/Join_%28SQL%29) s –

ответ

0

Вы можете написать свой запрос так:

SELECT SUM(Stars) AS starsum 
FROM Table1 t1 
WHERE 
    EXISTS (
    SELECT * 
    FROM Table2 t2 
    WHERE 
     T2.Name=T1.Name 
     AND T2.Teams='A' 
     AND t2.Age=20 
) 
1

Попробуйте этот запрос,

SELECT SUM(t1.Stars) AS starsum 
    FROM Table1 t1 INNER JOIN Table2 t2 
    ON t1.Name=t2.Name AND t2.Teams='A' AND t2.Age=20 

Вы должны использовать inner join для получения желаемых результатов.

0

Вы можете использовать следующий код

$result = mysql_query(" 
SELECT SUM(Stars) AS starsum 
FROM Table1 
WHERE Name IN (
    SELECT DISTINCT t1.Name 
    FROM Table1 t1, Table2 t2 
    WHERE t1.Name = t2.Name 
    AND t2.Teams = 'A' 
    AND t2.Age = 20 
) 
"); 
$row = mysql_fetch_assoc($result); 
$antalstjernerhold = $row['starsum']; 

Запрос с использованием ниже подзапроса, который закачает имена, принадлежащие к обеим таблицам и имеют команды, как А и в возрасте 20 лет & затем использовать эти имена мы получаем сумму звезды

SELECT DISTINCT t1.Name 
FROM Table1 t1, Table2 t2 
WHERE t1.Name = t2.Name 
AND t2.Teams = 'A' 
AND t2.Age = 20 
Смежные вопросы