Avatar billede markpetersen Nybegynder
13. november 2012 - 16:10 Der er 13 kommentarer

Tilføje en række felter samtidigt ud fra et id

Hej

Jeg har en tabel med følgende værdier:
ID, USER_ID, FIELD_ID, VALUE

Jeg ønsker at oprette en ny række pr værdi i USER_ID.

Således at jeg ender op med nye rækker med data som minder om:

ID, USER_ID, FIELD_ID, VALUE
8856, 1489, 9, Ja
8857, 1145, 9, Ja
8858, 1304, 9, Ja

Kan det overhoved lade sig gøre? :)

På forhånd tak.

/Mark
Avatar billede michael_stim Ekspert
13. november 2012 - 16:53 #1
Hvor får du de andre værdier fra?

Aner ikke om jeg er inde på rette tænk, men noget á la dette?

http://dev.mysql.com/doc/refman/5.1/en/insert-select.html
Avatar billede markpetersen Nybegynder
14. november 2012 - 08:37 #2
Hej Michael

Jeg ved slet ikke om det kan lade sig gøre i en arbejdsgang, men kunne være fedt hvis....

Jeg ønsker for hvert USER_ID at tilføje en række, hvor FIELD_ID og VALUE blot bliver udfyldt med faste værdier.

ID = forløbende "ligegyldigt id"
USER_Id = brugernes id fra anden db
FIELD_ID = fast værdi (9)
VALUE = fast værdi (Ja)

Håber det giver mening? :)

/m
Avatar billede michael_stim Ekspert
14. november 2012 - 09:58 #3
USER_Id = brugernes id fra anden db, menes der her database eller tabel? Er det database, skal der gives rettigheder.

Tabel:

INSERT INTO tabel1 t1 (t1.user_id) SELECT t2.user_id FROM tabel2 t2;
INSERT INTO tabel1 (field_id, value) VALUES(9, 'ja');


Noget á la det.
Avatar billede markpetersen Nybegynder
14. november 2012 - 10:10 #4
USER_ID = brugerens id fra anden tabel

Er dette helt i skoven?? :)

INSERT INTO `wp_cimy_uef_data` t1 (t1.USER_ID) SELECT t2.ID FROM 'wp_users' t2;
INSERT INTO `wp_cimy_uef_data` (FIELD_ID, VALUE) VALUES(9, 'Ja');
Avatar billede michael_stim Ekspert
14. november 2012 - 10:17 #5
Det ser rigtigt nok ud, men test lige på en testtabel først.
Avatar billede michael_stim Ekspert
14. november 2012 - 10:18 #6
wp_users t2; //uden '
Avatar billede markpetersen Nybegynder
15. november 2012 - 09:09 #7
Hej Michael

Så fik jeg forsøgt følgende på en test tabel:
INSERT INTO wp_cimy_uef_data t1 (t1.USER_ID) SELECT t2.ID FROM wp_users t2
INSERT INTO wp_cimy_uef_data (FIELD_ID, VALUE) VALUES(9, 'Ja');



Men får desværre denne fejl:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 't1 (t1.USER_ID) SELECT t2.ID FROM wp_users t2 INSERT INTO wp_cimy_uef_data (FIE' at line 1


er der noget jeg har overset?
Avatar billede michael_stim Ekspert
15. november 2012 - 09:50 #8
Ja, du skal afslutte den første INTO med en ; se #3 og #4.
Avatar billede markpetersen Nybegynder
15. november 2012 - 10:08 #9
ahh sorry- ja det gav et andet output :)

Fejl
SQL-forespørgsel:

INSERT INTO wp_cimy_uef_data t1(

t1.USER_ID
)
SELECT t2.ID
FROM wp_users t2;

MySQL returnerede:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 't1 (t1.USER_ID) SELECT t2.ID FROM wp_users t2' at line 1
Avatar billede michael_stim Ekspert
15. november 2012 - 10:58 #10
Ser ud til den klager over punktummet til højre for t1. Prøv at udelade t1 og t2, da felterne alligevel ikke har samme navn:

INSERT INTO wp_cimy_uef_data (user_id) SELECT id FROM wp_users;
Avatar billede markpetersen Nybegynder
15. november 2012 - 11:26 #11
Sådan! ;)
Det fungerede sådan 50% af vejen..

Der oprettes nye rækker (id'er) i tabellen svarende til tabellen med brugere.

Problemet er bare at den ikke udføre anden linie - den indsætter kun en række når anden linie køres.


INSERT INTO wp_cimy_uef_data (user_id) SELECT id FROM wp_users;
# 1324 rækker påvirket.

INSERT INTO wp_cimy_uef_data (FIELD_ID, VALUE) VALUES (9, 'Ja');
# 1 række påvirket.
Avatar billede michael_stim Ekspert
15. november 2012 - 12:20 #12
Undskyld, det er mig der er forkert på den. Det skal selvfølgelig være en update, du har jo allerede rækkerne.

UPDATE wp_cimy_uef_data SET field_id=9, value='ja';
Avatar billede markpetersen Nybegynder
15. november 2012 - 12:29 #13
Det er super- har løst opgaven med tre sql strenge.

INSERT INTO wp_cimy_uef_data (user_id) SELECT id FROM wp_users;
UPDATE wp_cimy_uef_data SET VALUE = "Ja" WHERE FIELD_ID = 0
UPDATE wp_cimy_uef_data SET FIELD_ID = 9 WHERE VALUE = "Ja"

Mange tak for hjælpen!

Point på vej :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester