У меня есть тестер таблицы, который имеет первичный идентификатор и внешний ключ, который ссылается на идентификатор таблицы, называемой тестом.Mysql count, join и dual совместно
В тестовой таблице имеется столбец numAllowed, который показывает, сколько человек может пройти этот конкретный тест.
Я хочу вставить новый тестер, тестовый столбец которого ссылается на тест, только если есть меньше тестеров, которые также ссылаются на один и тот же тест, чем numAllowed для этого конкретного теста. Ex, «Alex», тестировщик, может пройти тест «География», если его принимают или уже приняли менее 20 человек (numAllowed).
Кроме того, как функция count работает в таком запросе? Учитывает ли он только столбцы, которые включены в соединения, или это «область действия» вне запроса? будет ли он возвращать счет всех идентификаторов в этой таблице?
insert into tester (test, createddate, ipaddress)
select
11, NOW(), xxx.xxx.xxx.xxx
from
dual
where exists
(select * from
test ts inner join
tester tr
on tr.test = ts.id
where ts.numAllowed - count(tr.id) > 0
and ts.id = '11')
что у вас есть в вашей «двойной» таблице? – fthiella
Ничего, это для выбора ваших собственных значений, насколько я знаю. –
Не знаю, поддерживается ли dual mySQL, но я уверен, что вы не можете использовать агрегированные функции, такие как count() в предложении WHERE. Вам нужно сгруппировать данные и использовать предложение HAVING. – scraatz