сумма PHP MySQL, если существует в другой таблице

Как мне это сделать?

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

Таблица 1

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

Таблица 2

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

Мне нужна сумма звезд в таблице 1, где имя существует в таблице 2, а команды = A и возраст = 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'];

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 чтобы получить желаемые результаты.

1

Другие решения

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

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
)
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'];

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

SELECT DISTINCT t1.Name
FROM Table1 t1, Table2 t2
WHERE t1.Name = t2.Name
AND t2.Teams = 'A'
AND t2.Age = 20
0
По вопросам рекламы [email protected]