MySQL: INSERT и SELECT в одном запросе - PullRequest
0 голосов
/ 22 октября 2011

У меня сложный запрос SQL для создания, который, по возможности, сэкономит мне много PHP-кода.

Итак, у меня есть HTML-форма, где посетитель может создать учетную запись пользователя с полями имя , электронная почта , пароль , интересы .

Для имени , электронной почты и пароля У меня есть простой INSERT запрос для ввода этой информации в базу данных users, однако * Поле 1022 * интересов может содержать несколько записей, поэтому эти данные хранятся в таблицах объединения «многие ко многим» (interests, user_interests).

Для того, чтобы я ввел эти интересы в таблицу user_interests , мне нужно получить идентификационный номер пользователя, который был автоматически увеличен с начального цикла запроса INSERT плюс еще один INSERT для каждого "интереса" "пользователь выбрал. Можно ли сделать все это одним SQL-запросом?

Ответы [ 2 ]

1 голос
/ 22 октября 2011

Если вы хотите сделать это с помощью одной команды, то это хороший пример для изучения написания хранимых процедур MySql.Результат будет намного быстрее.

http://dev.mysql.com/doc/refman/5.0/en/stored-routines-last-insert-id.html

http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-compound-statements.html

1 голос
/ 22 октября 2011

Ну, в MySQL оператор INSERT вставляется только в одну таблицу.Так что нет, это невозможно сделать одним запросом.Но вы можете сделать это с двумя запросами.MySQL поддерживает синтаксис, в котором вы можете вставить несколько строк одним запросом:

insert into user_interests (user_id, interest_id) values (1,1), (1,2), (1,3)

PS Я правильно понимаю, что интересы являются классификатором, и добавление новых строк в таблицу interests выходит за рамкиэтого вопроса, верно?

...