Вставить несколько значений с разными критериями выбора? - PullRequest
0 голосов
/ 13 мая 2011

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

Например, у меня есть две таблицы

  • Interest = id, subject1
  • userinterests = id, ID пользователя, интерес *

данные для таблиц могут выглядеть следующим образом

таблица интересов *

id  interests
-------------
1   cats  
2   mysql  
3   php  

пример пользователятаблица

id  user   interest_id
----------------------
1   dan    1            -- dan is interested in cats  
2   johan  2            -- johan is interested in mysql   
3   joe    1            -- joe is interested in cats  

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

пример интереса таблица

id  interests
-------------
1   cats  
2   mysql  
3   php  
4   American Idol  
5   beards  

Я хочу обновить базу данных userInterestдобавить

id  user     interest_id
------------------------
4   hayley   4          -- hayley is interested in American Idol  
5   hayley   5          -- hayley is interested in beards 

, но я не могу, потому что я не знаю, какие идентификаторы интересов для American Idol и бороды?

Я хочу вставить все интересы Хейлис сразу всвоего рода множественный запрос на вставку.

INSERT into userInterests   
  Values(hayley, --whatever the id from table interests for "American Idol")  
  Values(hayley, --whatever the id from table interests for "beards")

Полагаю, я бы где-нибудь использовал SELECT, но не знал где.Может ли кто-нибудь дать мне пример того, как это сделать?

Ответы [ 2 ]

1 голос
/ 13 мая 2011

Использование:

INSERT INTO userInterests 
SELECT DEFAULT, 'hayley', i.id
  FROM INTERESTS i
 WHERE i.subject1 IN ('American Idol', 'beards')

DEFAULT, потому что я предполагаю, что столбец id равен AUTO_INCREMENT.

0 голосов
/ 13 мая 2011

Как то так?

INSERT INTO userInterests VALUES
(hayley, SELECT id FROM interests WHERE subject1 = "American Idol"), 
(hayley, SELECT id FROM interests WHERE subject1 = "beards"); 

Поставьте вместо hayley идентификатор Хейли (вы не сказали, какой у него тип, поэтому я не знаю).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...