2014-02-04 3 views
0

Вот что я хочу сделать.Вставить фиксированное значение в объединенную таблицу

У меня есть пустой стол под названием «программное обеспечение» с полями: ключом, компьютером и программным именем. У меня есть вторая таблица под названием «оборудование» (которая имеет поля equipmentID и itemtype), и у нее есть тысячи предметов, только некоторые из которых являются компьютерами (поэтому я пытаюсь фильтровать «itemtype = computer»).

key|itemID  |itemname  |otherstuff 
    1 |4533  |television |blah, blah 
    1 |3823  |computer  |blah, blah 
    1 |1111  |couch  |blah, blah 
    1 |3423  |computer  |blah, blah 
    1 |1234  |computer  |blah, blah 
    1 |9999  |couch  |blah, blah 
    1 |8823  |computer  |blah, blah 

Я хочу заполнить таблицу «ПО» всеми компьютерами (идентификаторами компьютера) и фиксированным именем, например «Windows», так что в конце у меня есть что-то вроде этого.

key|computerID |softwarename 
1 |3823  |Windows 
2 |3423  |Windows 
3 |1234  |Windows 
4 |3126  |Windows 
5 |8823  |Windows 

и т. Д. Для каждого из 1000 компьютеров в списке. Затем я запустил его еще пару раз для других программ, которые находятся на каждом компьютере.

Все примеры, которые я могу найти, указывают на то, что вы вставляете строки из другой объединенной таблицы, чего я не хочу делать.

Касательно, есть ли действительно хороший ресурс, который дает примеры различных SQL-запросов и объяснений? Я действительно хотел бы быть немного более независимым, занимающимся жесткими запросами.

Спасибо!

+1

вы можете поделиться запросы, которые вы пробовали –

+0

Английское описание и данные дамп имеют несогласованные имена столбцов (hardwareID/itemID и itemtype/itemname). Что правильно? Кроме того, пожалуйста, используйте [образец кода] (http://sscce.org) (здесь, SQL) для выборок данных, а не ad-hoc-схему. – outis

+0

да, извините. Я был в спешке. Таблицы имеют правильные метки, а не мое описание. –

ответ

2

Вы можете использовать INSERT ... SELECT, но один из столбцов в SELECT будет постоянным.

INSERT INTO software (computerID, softwarename) 
    SELECT itemID, "Windows" 
    FROM equipment 
    WHERE itemname='Computer' 
; 
+0

Спасибо! Это просто и работает. (и +1 за то, что я не говорю со мной). Кстати, любые идеи о хорошей книге SQL? –

0

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

SELECT @i:[email protected]+1 As 'Key', equipmentID as computerID, 'Windows' as softwarename 
FROM equipment 
WHERE itemtype='computer' 
+0

Это показало мне данные, которые я хотел, но не сделал фактической вставки, но потом, я думаю, вы сказали, что :) –

Смежные вопросы