[SQL] Dodawanie rekordów do tabeli korzystając z drugiej


(matty24) #1

Witam.

Nie znam się zbyt dobrze na SQL a chciałbym sobie troszkę ułatwić pracę. Mam w jednej tabeli (np. xx1) kilka kolumn, m.in. 'user_id'. Rekordy w tej kolumnie się nie powtarzają.

-------------------------------------

--------------XX1------------------

-------------------------------------

user_id | cos tam | cos innego

------------------------------------

1 | 22 | 44           

2 | 12 | 54

Według pewnych kryteriów wybieram kilkaset rekordów 'user_id'.

SELECT `xx1`.`user_id` FROM `xx1` WHERE `cos_tam` =2 AND `cos_tam_innego` <10

Teraz w innej tabeli (np. xx2) też mam kolumnę 'user_id' oraz m.in. 'model_id'. Tutaj rekordy w 'user_id' mogą się powtarzać, np. mam wpis user_id = 5 - model_id = 1 i user_id = 5 - model_id = 2.

-------------------------------------

--------------XX2------------------

-------------------------------------

user_id | model_id | cos 

------------------------------------

5 | 1 | 6       

5 | 2 | 8

Teraz wybieram z tej tabeli tylko wpisy, w których user_id pokrywa się z rekordami wyszukanymi w tabeli xx1.

SELECT * FROM `xx2` WHERE `user_id` IN (

SELECT `xx1`.`user_id` FROM `xx1` WHERE `cos_tam` =2AND `cos_tam_innego` <10

)

Mam nadzieję, że do tej pory jest to zrozumiałe. Teraz co chcę zrobić. Chcę skopiować te rekordy modyfikując jedynie model_id na inna, stałą wartość. Przy pomocy Insert into () values () da się to zrobić, ale nie wiem ja w values dodać w miejscu user_id tylko te rekordy wyszukane powyżej. Proszę o pomoc, albo poddanie nazwy funkcji, dzięki której dam radę takie coś zrobić.


(przemol96) #2

Znam tylko podstawy SQL'a, ale czy nie prościej przypisać te dane do zmiennych lub tablicy, zmodyfikować to co potrzebne i kolejnym zapytaniem zapisać?


(Grzelix) #3

Tak na 90%, (nie mam pod ręką nic żeby przetestować)

INSERT INTO table (user_id, model_id) VALUES (Select xx1.user_id from xx1 where .... , 10)