2015-01-06 9 views
1

У меня есть таблица для многих и многих продуктов и моделей. Можно ли вставлять новые строки, если идентификаторы совпадают в другой строке?Вставьте во много-много таблицу на основе текущей информации о строках

Пример таблицы:

| p_id | m_id | 
+------+------+ 
| A | 2 | 
| A | 3 | 
| B | 1 | 
| B | 2 | 
| C | 1 | 

сценария SQL:

Если какой-либо продукт относится к модели 2, вставить новую строку этого продукта и продукта 4.

таблица стала бы:

| p_id | m_id | 
+------+------+ 
| A | 2 | 
| A | 3 | 
| A | 4 | 
| B | 1 | 
| B | 2 | 
| B | 4 | 
| C | 1 | 

Я должен сделать это в SQL. Более конкретно, Sequel Pro.

+0

Моя единственная рекомендация по этикетированию - использовать код в ваших таблицах и стараться не добавлять слишком частые комментарии в конце. – AdamMc331

+0

Я собирался ответить на ваш вопрос, но я не понял, что вы хотите вставить, где id = '' не имеет смысла, можете ли вы дать нам более подробную информацию? – zardilior

ответ

1

Я не работал с Sequel Pro, поэтому я не знаю, есть ли у меня правильный синтаксис, но, возможно, я могу дать вам правильную логику.

В MySQL вы можете использовать оператор select для вставки новых строк в таблицу. В вашем случае, вы хотите вставить новые строки с p_id строк, оказывающих m_id из 2. Я хотел бы начать с написания этого запроса:

SELECT DISTINCT p_id 
FROM myTable 
WHERE m_id = 2; 

Затем вы хотите, чтобы каждый новый ряд, чтобы иметь m_id из 4 . вы можете сделать это константа в вашем выборе пункта:

SELECT DISTINCT p_id, 4 AS m_id 
FROM myTable 
WHERE m_id = 2; 

Это даст вам строки, которые вы хотите вставить:

| p_id | m_id | 
+------+------+ 
| A | 4 | 
| B | 4 | 

Нет ш, чтобы вставить эти строки, синтаксис будет выглядеть примерно так:

INSERT INTO myTable (col1, col2) myQuery; 

Вот что я использовал:

INSERT INTO myTable (p_id, m_id) SELECT DISTINCT p_id, 4 FROM myTable WHERE m_id = 2; 

А вот SQL Fiddle пример.

+1

Спасибо! Двое учатся, делая константу в моей статье select и SQL Fiddle. –

+0

SQL Fiddle - мой лучший друг. Это также очень полезно на этом веб-сайте, так как позволяет пользователям совместно использовать проекты таблиц и запросы, чтобы легко воссоздавать проблемы и решать их. @IanDavis – AdamMc331