Как мне это сделать?
У меня есть эта таблица:
Таблица 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'];
Попробуйте этот запрос
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
чтобы получить желаемые результаты.
Вы можете написать свой запрос следующим образом:
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
)
Вы можете использовать следующий код
$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