Я застрял на сумму в sql. Я пытаюсь сделать следующее:
У меня есть таблица, в которой хранятся идентификаторы предметов. Эти идентификаторы связаны с другой таблицей «библиотека» с описанием, именами и точками этих элементов.
Теперь мне нужно взять несколько разных предметов в библиотеке и вычислить сумму этих очков вместе.
Я надеюсь, что я был достаточно ясен. Под запросом я использую:
"SELECT SUM(`points`) AS `total` FROM `library` WHERE `id` = '". $row2['lid'] ."'"
Если идентификаторы приходят из таблицы, то вы должны использовать join
, in
, или же exists
, Что-то вроде:
select sum(points) as total
from library l join
otheridtable oit
on l.id = oit.id;
Вам следует не переместите идентификаторы из базы данных на прикладной уровень, просто вставьте их в строку и отправьте обратно в базу данных. Это не элегантно, неэффективно и требует больше работы, чем необходимо.
Возможный способ сделать это:
"SELECT SUM(`points`) AS `total` FROM `library` WHERE `id` in (". $IDlist .")"
куда $IDList
это список ваших идентификаторов через запятую, как, например, "'1', '2', '3'"
,
Если это числовые идентификаторы, вы можете избежать одинарных кавычек, они используются для строк.