Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle erweitern und andere Tabelle Hinzufügen
moinmoin666 21-03-2007, 16:04 Hi leute!
Ich habe so zwei Probleme:
1.)
Ich habe ein PM system, welches auf Folder basiert, ist ja auch nicht soo tragisch! Nur es ist eben so, das jeder USer einen eigenen Inbox, Outbox, Mod und System Ordner hat!
hier mal nen Bildlicher ausschnitt vom phpmyadmin:
http://wellblech-board.net/mother-brain/sql.JPG
Ich würde jetzt aber gerne jedem User per owner eine weitere Tabelle mit dem Namen: BLACKJACK geben!
Nur wie kann ich sowas machen?
Sowas wie
INSERT INTO `pmfolders` ( `id` , `parent` , `owner` ,
`name` , `sortfield` , `sortorder` , `prunedays` )
VALUES (
'1', '0', '547', '__blackjack', 'added', 'DESC', '0'
);
Hab ich schon raus, ich würde aber gerne für jeden Owner for each Owner so ungefähr ;-)
Ich weiß aber leider noch nicht wie das geht :dontknow:
2.)
Ich habe eine Tabelle pic_urls
wo 5 Felder für URLS drinn stehen, ich würde aber gerne eine weitere Tabelle einfügen
also pic_url5
Auch da weiß ich nicht wie das geht :(
wäre klasse wenn wer mir helfen könnte!!
mfg moinmoin666
ZombieChe 21-03-2007, 17:08 zu 1)
Sofern du eine Tabelle mit allen Benutzern hast, lass die doch mit php alle durchlaufen und dann per insert mit der ownerid
zu 2)
MySQL Man: CREATE TABLE
moinmoin666 21-03-2007, 18:36 1.)
Jaein, wäre nich das ding, nur ich kann kein mysql! deswegen wollte ich fragen wie der php befehl dafür wäre.
2.)
Bissel schlecht ausgedrückt! Sollte nur nen table erweiterung der Tabelle sein, keine ganz neue ;)
ZombieChe 21-03-2007, 19:08 $sql = mysql_query("SELECT id FROM users") or die(mysql_error());
while ($result = mysql_fetch_row($sql)) {
$insert = "INSERT INTO `pmfolders` ( `id` , `parent` , `owner` ,
`name` , `sortfield` , `sortorder` , `prunedays` )
VALUES (
'1', '0', '".$result[0]."', '__blackjack', 'added', 'DESC', '0'
)";
mysql_query($insert) or die(mysql_error());
}
zu 2) Da du phpMyAdmin benutzt sollte das doch kein Problem darstellen oder?
Ansonsten:
CHANGE TABLE `pic_urls` ADD `pic_url5` VARCHAR(255)
1) funzt natürlich nur mit php. Ob das mit reinem mySQL auch lösbar ist, weiß ich grad nicht...
ghostgambler 21-03-2007, 20:29 1) funzt natürlich nur mit php. Ob das mit reinem mySQL auch lösbar ist, weiß ich grad nicht...
INSERT INTO pmfolders (id, parent, owner, name, sortfield, sortorder, prunedays) SELECT '1', '0', id, '__blackjack', 'added', 'DESC', '0' FROM users
oder so
moinmoin666 21-03-2007, 21:49 Nen dickes dankeschön @ZombieChe!
Das Prob:
Duplicate entry '1' for key 1
da mache diesen __blackjack schon haben (leider so um die 100 User, also alle die sich vor einer Woche angemeldet haben :( )
kann ich die ihrgedwie ausschließen, die das nicht haben?
Außerdem :(
Fehler
SQL-Befehl:
CHANGE TABLE `pic_url` ADD `pic_url5` VARCHAR( 255 )
MySQL meldet: Dokumentation
#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 'TABLE `torrents` ADD `pic_url5` VARCHAR(255)' at line 1
ZombieChe 22-03-2007, 00:39 whoops....hab mich in der Syntax geirrt (passiert mir irgendwie häufiger)...
Es muss natürlich 'ALTER TABLE' und nicht 'CHANGE TABLE' heißen *schande über mich*...
bei der INSERT Anweisung bin ich mir nicht sicher wie deine id Spalte angelegt ist. Sollte es einfach nur eine fortlaufende Nummerierung mit auto_increment sein (wie üblich) lass das Ändern der id Spalte einfach weg. Ansonsten musst du diese Spalte nochmal erklären...
ghostgambler 22-03-2007, 00:54 Original geschrieben von ghostgambler
INSERT INTO pmfolders (id, parent, owner, name, sortfield, sortorder, prunedays) SELECT '1', '0', id, '__blackjack', 'added', 'DESC', '0' FROM users
oder so
INSERT INTO ... SELECT ... FROM users a LEFT JOIN pmfolders b ON a.id = b.owner WHERE b.owner IS NULL
falls das geht ^^,~
moinmoin666 24-03-2007, 14:06 Nein eleider nicht :(
Fehler
SQL-Befehl: Dokumentation
INSERT INTO pmfolders( id, parent, owner, name, sortfield, sortorder,
prunedays )
SELECT '1', '0', id, '__blackjack', 'added', 'DESC', '0'
FROM users a
LEFT JOIN pmfolders b ON a.id = b.owner
WHERE b.owner IS NULL
MySQL meldet: Dokumentation
#1052 - Column 'id' in field list is ambiguous
kannste vllt damit was anfangen?
oder wenn ich
INSERT INTO pmfolders( id, parent, owner, name, sortfield, sortorder,
prunedays )
SELECT '1', '0', 'id', '__blackjack', 'added', 'DESC', '0'
FROM users a
LEFT JOIN pmfolders b ON a.id = b.owner
WHERE b.owner IS NULL
mache kommt wieder:
Duplicate entry '1' for key 1
:( es ist aber auch verhexxt!
ghostgambler 24-03-2007, 17:34 a.id
moinmoin666 24-03-2007, 17:39 sorry, das sagt mir grad garnicht :(
moinmoin666 27-03-2007, 18:13 Ich weiß es ist immer doof zu betteln, aber ich bin echt verzweifelt,
habe schon bei über 50 Leute die Tabelle Per Hand erstellt :(
Und es will nicht auf hören!
Es wäre echt klasse, wenn wer mir sagen könnte
wie ich
INSERT INTO pmfolders( id, parent, owner, name, sortfield, sortorder,
prunedays )
SELECT '1', '0', 'id', '__blackjack', 'added', 'DESC', '0'
FROM users
Um Model, das er die doplleten überspringt, entstehen soll der __blackjack ordner für jede ID
:( ihrt seid doch meine letzte Hoffnung!
ghostgambler 27-03-2007, 20:23 statt id a.id ... meine Güte, beschäftige dich doch einfach mal mit dem Thema...
moinmoin666 29-03-2007, 15:14 Fehler
SQL-Befehl: Dokumentation
INSERT INTO pmfolders( id, parent, owner, name, sortfield, sortorder, prunedays )
SELECT '1', '0', a.id, '__blackjack', 'added', 'DESC', '0'
FROM users a
LEFT JOIN pmfolders b ON a.id = b.owner
WHERE b.owner IS NULL
MySQL meldet: Dokumentation
#1062 - Duplicate entry '1' for key 1
Ich glaub das geht einfach nicht..... aber naja... trotzdem danke für die Hilfe, ich glaube ich lasse es halt mit dem Ordner :(
ZombieChe 29-03-2007, 21:44 Dabei gibt dir doch MySQL ne bombeklare Ansage...tztztz, lass doch die id Spalte einfach weg, falls sie auf auto_increment steht, oder mach halt das UNIQUE in phpmyadmin weg. Klarer gings doch echt nich...
ghostgambler 29-03-2007, 21:52 Original geschrieben von ZombieChe
Dabei gibt dir doch MySQL ne bombeklare Ansage...tztztz, lass doch die id Spalte einfach weg, falls sie auf auto_increment steht, oder mach halt das UNIQUE in phpmyadmin weg. Klarer gings doch echt nich...
Womit man die Konsistenz der DB dann auch eigentlich gleich ganz vergessen kann...
Nicht der Index ist falsch sondern die Art des Einfügens, aber wenn sich der TO nicht mit dem Thema auseinander setzen will kann man da auch nix dran ändern ~.~
moinmoin666 03-04-2007, 20:13 ICh kenne mich doch nicht aus, und weiß nicht wie mysql reagiert ;(
aber hiermit hat es wohl geklappt!
Eingefügte Zeilen: 850
Letzte automatisch eingefügte ID: 36529 (die Abfrage dauerte 36.9965 sek)
SQL-Befehl: INSERT INTO pmfolders( parent, owner, name, sortfield, sortorder, prunedays )
SELECT '0', a.id, '__blackjack', 'added', 'DESC', '0'
FROM users a
LEFT JOIN pmfolders b ON a.id = b.owner
WHERE b.owner IS NULL
ICH DANKE EUCH ALLEN!!!
|
|