Как я могу вставить слово в таблицу после проверки его по другой таблице? - PullRequest
0 голосов
/ 21 сентября 2011

У меня есть две таблицы: searches и commonWords. Учитывая пользовательский ввод Q, если Q не найден в commonWords, я хочу вставить его в searches.

Если честно, я просто запутался, как бы я это сделал. Как я могу объединить INSERT INTO со всем SELECT .. ГДЕ?

Я знаю, что могу сделать это двумя запросами:

$db->query('SELECT * FROM commonWords WHERE word = ?', $q);
if ($db->affectedRows() > 0)
  $db->query('INSERT INTO searches (search) VALUES (?)', $q);

Однако я бы хотел ограничить эту операцию одним запросом.

Спасибо за любую помощь!

1 Ответ

2 голосов
/ 21 сентября 2011

попробуйте это, если вы хотите вставить строку, которая существует в commonWords

insert into searches (search) select word from commonWords where word = ?

, но вы должны быть осторожны, потому что вы должны установить уникальный индекс для search.search, если нет, вы можете вставить несколько строкс тем же значением

, если вы хотите вставить несуществующее слово в поиски, то вы должны попробовать это

$db->query('insert into searches (search) select case when count(word) = 0 then \'?\' else NULL end as word from commonWords where word = ?', $q);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...