26. januar 2002 - 16:42Der er
5 kommentarer og 1 løsning
Indsæt fra anden tabel + en ekstra kolonne
Hejsa Mit site er i php, derfor denne kategori. Jeg skal indsætte nogle data i en mysql tabel som jeg henter fra en anden tabel. De to tabeller er identiske bortset fra at tabel_1 indeholder en ekstra kolonne som ikke findes i tabel_2 Jeg plejer at gøre sådan her: INSERT INTO tabel_1 SELECT * FROM tabel_2
Nu indeholder tabel_1 imidlertid én kolonne mere end tabel 2 hvorfor jeg får følgende fejlmeddelelse: "Column count doesn't match value count at row 1"
Den ekstra kolonne i tabel_1 skal have en fast værdi, f.eks. "12345", men hvordan indsætter jeg den samtidig med jeg indsætter dataene fra tabel_2 ?
Jeg har prøvet med: INSERT INTO tabel_1 SELECT * FROM tabel_2, "12345" Og: INSERT INTO tabel_1 (*) VALUES (SELECT * FROM tabel_2, "12345")
Alternativt kan jeg altid lave en udenomsløsning som først henter og derefter indsætter, men jeg vil helst klare det hele i sql:)
Hvis der er nogle som kan løse problemet vil jeg blive meget glad:)
Ingen hurtige eksperter i dag? Nå, men så vil jeg benytte følgende nødløsning indtil videre, men jeg vil gerne stadig vide hvordan man rigtigt gør hvis nogen kender svaret:)
$query = 'SELECT * FROM tabel_2'; $sql = mysql_query($query) or die (mysql_error()); while($out = mysql_fetch_assoc($sql)){ $c = sizeof($out); $i=0; foreach($out as $key=>$val){ $i++; $cols .= $key; $vals .= '"'.$val.'"'; if($c!=$i){ $cols .=', '; $vals .=', '; } } $query = 'INSERT INTO tabel_1 ('.$cols.', ekstra_kolonne) VALUES ('.$vals.', '.12345.')'; mysql_query($query) or die (mysql_error()); }
Okay, den vil jeg prøve, selvom jeg har så mange kolonner(ca. 80) det ville være sjovere hvis det kunne foregå automatisk(ville også være rart hvis der en dag blev tilføjet kolonner). Mange tak:)
Ups, jeg var vist kommet til at logge ind med en gammel bruger dengang jeg oprettede spørgsmålet. (ved godt man ikke må have flere - slå mig hvis i vil) *sorry*
Okay. Jeg kender kolonnens placering så jeg tror næsten jeg vil gøre sådan. Det er også kun fordi det er besværligt med den første model når der er 80 kolonner med bruger oplysninger. Og hvis man tilføjer en kolonne i begge tabeller skal man ændre queryen overalt hvor den bruges, hvilket man slipper for med den jeg selv brugte eller den nyeste du lige viste. Men der mangler da noget? Skal der ikke stå:? INSERT INTO tabel_1 SELECT * FROM tabel_2, 1234
Synes godt om
Ny brugerNybegynder
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.