Avatar billede nemlig Professor
19. november 2008 - 14:44 Der er 14 kommentarer og
1 løsning

indsæt poster fra tabel1 i tabel 2,

Jeg har tabel-1, som indeholer 4 felter:
id
navn
emailadresse
tjek

Tabel-2 indholder 3 felter
id
navn
emailadresse

Jeg ønsker så, at kopiere de poster i tabel-1 over i tabel-2, hvor feltet "tjek" i tabel-1 har værdien '1'.

Jeg kan selvfølgelig lave et udtræk med where, og derefter køre en while.
Men mon ikke det kan klares mere enkelt.
Avatar billede arne_v Ekspert
20. november 2008 - 01:01 #1
prøv:

INSERT INTO tabel2 SELECT id,navn,emailadresse FROM tabel1 WHERE check=1
Avatar billede nemlig Professor
20. november 2008 - 07:45 #2
Det virker ikke!
Jeg får denne fejl:

Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in C:\wamp\www\emailsystem\tool\tool.php on line 42
Databasefejl:

MySQL-sætningen var:
INSERT INTO midlertidig_modtagere SELECT navn,emailadresse FROM kalender_user WHERE menu_1=1

tabel2 = midlertidig_modtagere
tabel1 = kalender_user
felterne "navn" og "emailadresse" findes i begge tabeller.
"id" skal iøvrigt ikke kopieres fra tabel1 til tabel2, da id sættes automatiskt (auto_increment)
Avatar billede arne_v Ekspert
20. november 2008 - 15:05 #3
Selvom det ar auto increment saa skal man eksplicit undlade det.

INSERT INTO midlertidig(navn,emailadresse)_modtagere SELECT navn,emailadresse FROM kalender_user WHERE menu_1=1

hvis det ikke virker saa udskrive MySQL fejlen, saa vi kan se hvad der er galt.
Avatar billede nemlig Professor
20. november 2008 - 19:18 #4
Denne gang virker det. Tak for det.
MEN......
Jeg glemte, at jeg faktisk har en session-variabel, som jeg også gerne vil have indsat samtidig med. Er det muligt eller skal jeg gøre brug af min SELECT fra Tabel1 og derefter While og INSERT TO.

$_SESSION['uniktnr'] skal indsættes i feltet ´uniktnr´.

Send blot et svar uanset løsningsforslag eller ej.
Avatar billede arne_v Ekspert
20. november 2008 - 19:33 #5
$sesid = $_SESSION['uniktnr'];
$sqlstr = "INSERT INTO midlertidig(navn,emailadresse,uniktnr)_modtagere SELECT navn,emailadresse,$sesid FROM kalender_user WHERE menu_1=1";

boer ordne det.
Avatar billede arne_v Ekspert
20. november 2008 - 19:34 #6
og svar
Avatar billede nemlig Professor
20. november 2008 - 20:21 #7
Den får jeg fejl på.

MySQL-sætningen var:
INSERT INTO midlertidig_modtagere (navn,emailadresse,uniktnr) SELECT navn,emailadresse,P2179Q FROM kalender_user WHERE menu_1=1

$sesid har ikke noget med tabelen "kalender_user" at gøre.

Men jeg har heller ikke en løsning.
Avatar billede arne_v Ekspert
20. november 2008 - 20:50 #8
Naar det er tekst, saa skal der '' omkring i SQL.

INSERT INTO midlertidig_modtagere (navn,emailadresse,uniktnr) SELECT navn,emailadresse,'P2179Q' FROM kalender_user WHERE menu_1=1
Avatar billede nemlig Professor
20. november 2008 - 20:56 #9
jo, men det er jo min sessionvariabel, som er indsat i koden og ikke teksten.
Se dit forslag kl. 19:33:55.
Jeg kan ikke forstå, at variablen $sesid står som et felt, der hentes fra tabellen "kalender_user". Og det giver jo også en fejl.
Avatar billede arne_v Ekspert
20. november 2008 - 21:09 #10
Proev for sjovs skyld at udfoere:

SELECT 123,'ABC' FROM kalender_user

!

(man kan godt selekte konstanter fra en tabel)
Avatar billede arne_v Ekspert
20. november 2008 - 21:09 #11
Giver den ogsaa fejl med '' omkring ? Hvilken fejl ?
Avatar billede nemlig Professor
20. november 2008 - 21:36 #12
hehe - du er sgu en tålmodig og pædagogisk mand.
Glad for, at du ikke er opgivende, men lader mig afprøve forskellige løsninger.

Det hjalp med ....'".$sesid."'.....

Jeg fatter stadig ikke, hvorfor det virker, når der selectes en variabel, som slet ikke er en del af tabellen kalender_user.
Og det er også lige meget - der er meget jeg ikke fatter - det kan der skrives mange tykker bøger om det....

Mange tak for hjælpen og ikke mindst tålmodigheden :)
Avatar billede arne_v Ekspert
21. november 2008 - 01:42 #13
Der selectes ikke et felt men en konstant.

Prøv:

SELECT 123,'ABC' FROM kalender_user
Avatar billede arne_v Ekspert
21. november 2008 - 01:43 #14
Eller fra min MySQL:

mysql> SELECT f1,f2 FROM t1 WHERE f1 < 4;
+----+------+
| f1 | f2  |
+----+------+
|  1 | A    |
|  2 | BB  |
|  3 | CCC  |
+----+------+
3 rows in set (0.00 sec)

mysql> SELECT f1,f2,123 AS f3,'ABC' AS f4 FROM t1 WHERE f1 < 4;
+----+------+-----+-----+
| f1 | f2  | f3  | f4  |
+----+------+-----+-----+
|  1 | A    | 123 | ABC |
|  2 | BB  | 123 | ABC |
|  3 | CCC  | 123 | ABC |
+----+------+-----+-----+
3 rows in set (0.00 sec)
Avatar billede nemlig Professor
21. november 2008 - 07:38 #15
OK - så forstår jeg.
Tusind tak for eksemplerne.
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