php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.04.2011, 07:14  
Benutzer
 
Registriert seit: 13.01.2011
Beiträge: 58
PHP-Kenntnisse:
Anfänger
ejay befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Insert into - select

Hallo
Ich habe ein Problem
Ich will aus meiner Userdatenbank verschiedene Werte auslesen und diese in einer anderen Tabelle der DB einfügen.

Also meine 2 Tabellen sehen so aus:
tabelle1 Primär-Key = uid, email, name ...
tabelle2 Primär-Key = id, uid, email, name ...

Jetzt sollen verschiedene Daten der Tabelle 1 in Tabelle 2 übernommen werden, wobei die id der Tabelle 2 sich aber immer erweitern soll 1.2.3.4....
Die id soll sich immer erweiteren weil der User verschiedene Daten in Tabelle 2 schreiben kann.

Ich hab das jetzt so probiert.
PHP-Code:
session_start();
include(
'Verbindung_zur_DB');
if(isset(
$_POST['insert_select']))
{
$result mysql_query("
INSERT INTO tabelle2 ( uid, email, name )
SELECT uid, email, name FROM tabelle1 where uid='$uid'"
);

<form action ="<?php echo $PHP_SELF ?>" method = "post">
<input type="submit" name="insert_select" style="font-weight: 700" value="Button" />

Das ganze funktioniert auch soweit.
Das einzigste ist das er nur einmal die Daten in die tabelle2 schreibt, da keine id angelegt wird. Das Feld id bleibt leer.

Ich bedanke mich mal für eure Hilfe
mfg ejay
ejay ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.04.2011, 09:44  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.233
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Ist das ID-Feld denn auf Auto-Increment? Sollte es in diesem Fall sein. Falls es dann immer noch nicht klappt, versuche es mit dem Wert NULL. Also

INSERT INTO tabelle2 (id, ....) SELECT NULL, ....

Klingt komisch, das auf NULL zu setzen, veranlasst MySQL jedoch bei Auto-Increment-Spalten einen Wert zu generieren.

Wenn das nicht auf Auto-Increment steht und auch nicht stehen soll, hast du ein mittelschweres Problem, weil du dann ohne Stored Procedures keine IDs generieren kannst. Du kannst das leider in SQL so nicht richtig ausdrücken, es sei denn du kannst es aus anderen Spalten ableiten.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 20.04.2011, 11:47  
Benutzer
 
Registriert seit: 13.01.2011
Beiträge: 58
PHP-Kenntnisse:
Anfänger
ejay befindet sich auf einem aufstrebenden Ast
Standard

Also das war die Beste und präziseste Antwort bin jetzt in diesem Forum.
Hat auf Anhieb geklappt.
Hatte Auto-Increment nicht gesetzt.
Ich bedanke mich für deine Hilfe "mepeisen".
mfg ejay
ejay ist offline   Mit Zitat antworten
Alt 20.04.2011, 12:42  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Zitat:
INSERT INTO tabelle2 (id, col1, col2) SELECT NULL, spalte1,spalte2 FROM tabelle1
Wenn man nicht mit der NULL hantieren möchte, dann kann man das auch so schreiben:
Code:
INSERT INTO tabelle2 (col1, col2) SELECT spalte1,spalte2 FROM tabelle1
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 20.04.2011, 12:54  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.233
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Ähhhm. Ja. Darum ging es ja bereits, werter Wolla
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 20.04.2011, 12:56  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Ich habe das "INSERT NULL,... schon so oft gelesen, dass ich davon ausgegangen bin, dass wenn man NULL auf eine Autoinc-Spalte insertiert, das dann ganz normal hochzählt.
habs aber noch nie ausprobiert, weil ich das für überflüssig halte.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 20.04.2011, 12:59  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.233
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Ja, es zählt dann hoch. Es war nur als Variante gedacht, falls es trotz Auto-Increment nicht funktioniert. Egal, Problem ist ja gelöst und verkehrt isses bei MySQL nicht, es sieht nur evtl. etwas komisch aus. Dafür ist das Weglassen auch evtl. komisch anzusehen, wenn eine wichtige Spalte einfach weggelassen wird
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 20.04.2011, 13:01  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Ich will den Fred nicht entführen, aber das passt noch irgendwie dazu: Wenn ich einen Datensatz mit id = 4711 in eine andere Tabelle verschieben will, dann mache ich:

Code:
INSERT INTO archiv (col2,col3,col4) SELECT col2,col3,col4 FROM tabelle WHERE id = 4711
DELETE FROM tabelle WHERE id = 4711
So weit, so gut. Meine Frage nun: Kann ich mir irgendwie Tipparbeit sparen, wenn die Ursprungstabelle sehr viele Spalten hat? bei INSERT INTO archiv SELECT * FROM tabelle kriege ich ja die id-Spalte mit.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 20.04.2011, 13:03  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.233
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

ne, kannste nicht. du kannst dir nur die spaltennamen in den klammern sparen. also:
Code:
INSERT INTO archiv SELECT NULL, col2, col3, col4 FROM tabelle....
ABER: Die Spaltenreihenfolge muss dann stimmen. Und ist die Tabelle mal mit einer anderen Spaltenreihenfolge angeelgt, passt das nimmer zusammen.

Nachtrag: Es ginge per Trick. Gegeben sei Archiv-Tabelle mit den Spalten:
ID
ORIG_ID
COL2
COL3
usw.

Dann kann man es so verkürzen:
Code:
INSERT INTO archiv SELECT NULL, tabelle.* FROM tabelle ....
Aber wie gesagt muss dann die Spaltenreihenfolge immer passend stimmen.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 20.04.2011, 13:06  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Merci - nun ja ich bin schon faul und kopiere mir den SELECT teil aus PMA raus (Suchen, dann alle Spalten markieren außer der id. Das Weglassen der INSERT-Spalten hatte ich übersehen, beim nächsten Update denke ich mal dran.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
INSERT INTO funktioniert nicht Schorschologe Datenbanken 5 25.01.2011 16:02
[Erledigt] mehrfaches INSERT über PHP drzwockel PHP Tipps 2010 10 10.08.2010 11:03
SELECT INTO OUTFILE clientseitig nachgebaut - bitte kurz drübersehen G.Schuster PHP-Fortgeschrittene 9 11.04.2010 18:51
Pfoblem mit INSERT INTO...SELECT ... FROM pfump Datenbanken 20 11.11.2009 15:44
[Erledigt] Insert + Select über 2 entfernte DB's Boennchen Datenbanken 9 03.11.2009 07:18
[Erledigt] Mysql Insert Select + Concat Hu5eL Datenbanken 14 10.06.2008 10:39
Differenz zwischen 2 Zahlen duderino PHP Tipps 2006 19 10.08.2006 22:12
INSERT syntax - gibt es die möglichkeit VALUES und SELECT zu PermanetMarker Datenbanken 8 06.07.2006 12:48
[Erledigt] SET-Spalten case-sensitive updaten. Datenbanken 9 28.08.2005 10:29
mysql dump einspielen (ohne phpmyadmin) PHP Tipps 2005-2 6 18.06.2005 21:50
[Erledigt] fehler den ich noch nie gesehen habe Datenbanken 7 09.06.2005 14:29
dynamisches MENÜ aus db lesen.probleme mit SUBid !! PHP Tipps 2005 26 24.03.2005 18:53
[Erledigt] MySQL-DB gibt keine Daten zurück!!! Datenbanken 4 21.12.2004 21:00
[Erledigt] INSERT INTO SELECT an mehrere Tabellen? Datenbanken 6 17.09.2004 16:57
Zeile einfach überspringen bei Unique-Verletzung tapferesschneiderlein Datenbanken 6 03.09.2004 14:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
insert into select, insert into select from, werte aus tabelle2 insert in tabelle1 wenn noch nicht vorhanden, insert into select formular, insert into mit select, insert into select mehrere, insert into select value, php insert into mit select, php insert, mysql insert select 2 id mitteilung, select insert into \', insert into nur gegebene spalten, action=\<?php echo $php_self ?>\>, php sql insert into select from, \insert into\ select inkrement, \insert into\ \select\, insert select spaltenreihenfolge, php insert into select, insert into select values, insert into select formular php

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:39 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum