Avatar billede qub- Novice
18. april 2005 - 08:45 Der er 20 kommentarer og
1 løsning

Kopiere info fra en tabel med bestemt id, til en anden tabel

Hvordan kopiere man "information" gemt i en tabel, med fx et bestemt id, over til en anden tabel..
Problemmet er umiddelbart at navnene i de 2 forskellige tabeller ikke er det samme, samt at der er mere end 1 "information/tråd" i den første tabel, der skal kopieres til den anden..


Håber i forstår hvad det er jeg siger, ellers må jeg jo prøve at formulere mig lidt bedre? :)
Avatar billede cpfrande Nybegynder
18. april 2005 - 12:51 #1
Halløjsa,

Det er jo bare at trække det ud fra den ene tabel og smide informationerne ind i den anden tabel med CREATE-syntaksen i MySQL.

- Kristian
Avatar billede qub- Novice
18. april 2005 - 16:04 #2
nej det er ikke så let igen når navnene i de 2 tabeller ikke er ens
Avatar billede Slettet bruger
18. april 2005 - 16:18 #3
http://dev.mysql.com/doc/mysql/en/insert-select.html

... og hvis det heller ikke er det du leder efter, tror jeg ikke du kan gøre det dirrekte i MySQL, men du skal bruge noget PHP..
Avatar billede cpfrande Nybegynder
18. april 2005 - 16:29 #4
gub-: Så burde det da være fint. Du kan jo ikke overføre data hvis tabellerne medmindre du selv vælger, hvordan det skal ind i den. Det gør du netop via SELECT ud fra en tabel og CREATE ind i en ny... så vælger du hvordan det skal overføres via din kode.
Avatar billede qub- Novice
18. april 2005 - 16:29 #5
gartzen, der tror jeg nemlig du er korrekt.. Det er vel os under php jeg har skrevet denne? :D hehe! Problemmet er bare at jeg er lidt lost på hvordan det kan gøres.
Avatar billede qub- Novice
18. april 2005 - 17:04 #6
Ja cpfrande.. Men der er somregel fx: id, navn osv under dem.. Det jeg mener :)
Avatar billede cpfrande Nybegynder
18. april 2005 - 17:11 #7
og hvad er problemet med det?
Avatar billede qub- Novice
18. april 2005 - 17:12 #8
I den ene tabel har jeg måske: id, name, address og i den anden: superid, navn, addresse.. Ved ik om du kan følge mig?
Avatar billede Slettet bruger
18. april 2005 - 17:40 #9
Hmm.. Noget ala:

<?php
$res = mysql_query("SELECT id, name, address FROM tbl1");
$sql = "";
while ($row = mysql_fetch_assoc($res)) {
  $sql .= "INSERT INTO tbl2 ('" . implode("', '", array_keys($row)) . "') VALUES ('" . implode("', '", $row) . "');\n";
}
mysql_query($sql);
?>

?? :s
Avatar billede Slettet bruger
18. april 2005 - 17:51 #10
Edit:

<?php
$res = mysql_query("SELECT id, name, address FROM tbl1");
$sql = "";
while ($row = mysql_fetch_assoc($res)) {
  $sql .= "INSERT INTO tbl2 (" . implode(", ", array_keys($row)) . ") VALUES ('" . implode("', '", $row) . "');\n";
}
mysql_query($sql);
?>
Avatar billede qub- Novice
18. april 2005 - 17:56 #11
Jow, nu har jeg ikke lige testet det.. Men hvis der er flere gemt i den første tabel.. Skriver den, dem så ALLE derover.. Altså flere "tråde" hvis man kan sige det sådan?
Avatar billede cpfrande Nybegynder
18. april 2005 - 18:03 #12
<?php
// Opkald til MySQL
$sql = null;

$res = mysql_query("SELECT id, navn, adresse FROM tabel1");
while ($row = mysql_fect_assoc($res))
    $sql .= "INSERT INTO tabel2 VALUES ('null', '".$row['navn']."', '".$row['adresse']."');
mysql_query($sql);
?>

Sådan her - kan være du bedre forstår det så.

Denne tager ALLE tubler i tabel1 og smider dem over i tabel2. Eneste ændring er, at de får nye tal i "id".

- Kristian
Avatar billede cpfrande Nybegynder
18. april 2005 - 18:04 #13
Ny udgave - fejlrettet:
<?php
// Opkald til MySQL
$sql = null;

$res = mysql_query("SELECT id, navn, adresse FROM tabel1");
while ($row = mysql_fect_assoc($res))
    $sql .= "INSERT INTO tabel2 VALUES (null, '".$row['navn']."', '".$row['adresse']."');
mysql_query($sql);
?>
Avatar billede qub- Novice
18. april 2005 - 20:42 #14
det fungere ikke rigtig.. Den kommer med følgende fejl: Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\cybertape\shop_order.php on line 34



Den indsætter ikke noget, men opretter en, med standardværdien..


Koden ser nu således ud:



// Opkald til MySQL
            $sql = null;

            $res = mysql_query("SELECT id, prod_name, prod_id, prod_price, prod_price_sale, prod_weight, date FROM shopping WHERE session='$session_id'");
            while ($row = mysql_fetch_assoc($res))
           
                $order_id = $row[id];
               
                $order_prod_id = $row[prod_id];
                $order_prod_name = $row[prod_name];
                $order_prod_price = $row[prod_price];
                $order_prod_price_sale = $row[prod_price_sale];
                $order_prod_weight = $row[prod_weight];
                $order_date = $row[date];
               
                $sql .= "INSERT INTO order VALUES ('$order_id', '$_SESSION[cart_order_id]', '$order_prod_id', '$order_prod_name', '$order_prod_price', '$order_prod_price_sale', '$order_prod_weight', '$order_date')";
            mysql_query($sql);
Avatar billede cpfrande Nybegynder
18. april 2005 - 21:49 #15
Halløjsa,

Det er forståeligt.
Du skal have { og } om indholdet, der skal være i din while-sætning. Grunden til, at det ikke var hos min udgave, var at der kun var en linie. Ved en linie kan man undlade { og }, men ved flere skal de være der...

- Kristian
Avatar billede qub- Novice
19. april 2005 - 14:46 #16
det hjælper ikke noget.. Den kommer satdig med den samme fejl! Og der er intet der kommer ind i databasen :/
Avatar billede qub- Novice
19. april 2005 - 15:11 #17
Nå, har på en eller anden måde fået fjernet den fejl :)

MEN! Den indsætter stadig kun EN af mine 'tråde' fra shopping.. Formålet er jo at den skal indsætte ALLE 'tråde' fra shopping, der har det samme sessionid..
Avatar billede qub- Novice
19. april 2005 - 15:17 #18
Nå, jeg har sku fået det til at virke nu.. Opret nogle svar så i kan få points
Avatar billede Slettet bruger
19. april 2005 - 15:21 #19
Jeg tror vidst ikke jeg gjorde så mget andet end at skrive nogle scripts med fejl i, så pointene må gå til cpfrande. :)
Avatar billede cpfrande Nybegynder
19. april 2005 - 16:14 #20
Hermed et svar, deler dog gerne med gartzen :P

- Kristian
Avatar billede cpfrande Nybegynder
24. april 2005 - 19:10 #21
Takker for points! :-)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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