morris_m Geschrieben 11. Januar 2009 Teilen Geschrieben 11. Januar 2009 Hey, ch moechte mal fragen ob jemand mir helfen koennte mein script fertig zu bringen Ich moechte eine mysql Abfrage die alle Daten von einer Tabelle AGENTUR an hand einer Spalte firma eindeutig einem USER über die agentur.id zuweist ...die neue dafür verwendete spalte in der user tabelle könnte user.agentur_update heißen dh. in die neue spalte agentur_update beinhaltet dann die id der entsprechenden agentur, die spalte firma können wir dann aus der user tabelle entfernen und hätten immernoch die referenzierung über agentur um an die daten zu kommen. Here is der Agentur script,die ich gebastelt habe. CREATE TABLE agentur(id_firma INT(11), firma VARCHAR(25)); SELECT * FROM test.user LEFT JOIN test.agentur ON user.id_firma = agentur.id_firma; Dann hab ich diese Tabelle bekommen. -------+------------+----------------------------------+--------+----------+-------+ | id | id_firma | vorname | nachname | strasse | plz | wohnort | email | passwort | date | time | ip | newsletter | session | points | id_firma | firma | +----+----------+---------+----------+-----------------------+-------+-----------+-------------------------+----------+------------+----------+---------------+------------+----------------------------------+--------+----------+-------+ | 40 | 0 | name | lastname | belgerstr .7| 12987 | Yakima |ass@yahoo.com | ard | 2008-07-09 | 12:50:00 | 194.163.234.7 | 0 | 939329349249214 | 14 | NULL | NULL | +----+----------+---------+----------+-----------------------+-------+-----------+-------------------------+----------+------------+----------+---------------+------------+----------------------------------+--------+----------+-------+ 1 row in set (0.00 sec) fuer die naechste Operation neue dafür verwendete spalte in der user tabelle könnte user.agentur_update heißen dh. in die neue spalte agentur_update beinhaltet dann die id der entsprechenden agentur, die spalte firma können wir dann aus der user tabelle entfernmen und hätten immernoch die referenzierung über agentur um an die daten zu kommen. habe ich die Funktion INSERT einfach mal benutzt INSERT INTO test.agentur SELECT 'firma' AS 'id_firma' from test.user; aber ich hab ein error bekommen 1ERROR 1136 (21S01): Column count doesn't match value count at row Hilfe! MFG Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 11. Januar 2009 Teilen Geschrieben 11. Januar 2009 Also aus dem ganzen Text muss man erstmal schlau werden was Du überhaupt willst. Das Problem ist aber, dass die Tabelle agentur zwei Felder hat. Bei im insert Statement fütterst Du aber nur eine Spalte. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
morris_m Geschrieben 11. Januar 2009 Autor Teilen Geschrieben 11. Januar 2009 Danke Robotto fuer die schnelle Antwort. Also es geht nicht weil die Tabelle user mehr parameter als agentur hast. und hast du eine Idee wie ich es machen kann, um dieses Problem zu beseitigen. und auch wie kann ich denn die user und agentur gleich machen,so dass wenn man sich anmeldet an der stelle Firma name nur ein Agentur_id steht. MFG Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
morris_m Geschrieben 11. Januar 2009 Autor Teilen Geschrieben 11. Januar 2009 Ich hab jetzt kapiert. was du gemeint hast und wo das Fehler liegt. Wie kann ich den alle dateiname und Id von Firma und bei Agentur zu legen ? Mit INSERT INTO test.agentur(id_firma, firma) VALUES(NULL, alle Daten von test.user, NULL, NULL, ......); Ich bin ideelos. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 11. Januar 2009 Teilen Geschrieben 11. Januar 2009 Also es geht nicht weil die Tabelle user mehr parameter als agentur hast. Wie sieht denn das ERD aus? Ich werde aus der Problemstellung leider nicht so ganz schlau. Dein Insert für die agentur Tabelle muss bei Values 2 Parameter haben. also insert into <tabelle> values <spalte 1, spalte 2,... spalte n> oder Du musst die Felder explizit angeben, die gefüllt werden. Hier findest Du einige einführende Informationen: MySQL Datenbankhandbuch Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
morris_m Geschrieben 11. Januar 2009 Autor Teilen Geschrieben 11. Januar 2009 Ich werde nochmal dieses Buch anschauen. ich hab es so versucht: INSERT INTO agentur SELECT firmaname AS firma FROM user; Geht es auch so? Dann hab ich alle firmadata von User in Agentur kopiert Uebrigens danke nochmal fuer den tips gestern Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 11. Januar 2009 Teilen Geschrieben 11. Januar 2009 Bitte poste einmal das vollständige ERD, denn aus dem was Du schreibst verstehe ich nicht, was Du möchtest. Du möchtest einen Insert auf Deiner Agenturtabelle machen aufgrund der Daten der Usertabelle, aber dafür benötigt man Tabellenstruktur und -beziehungen. Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
morris_m Geschrieben 11. Januar 2009 Autor Teilen Geschrieben 11. Januar 2009 user id INT id_firma INT (frueher als VARCHAR) name VARCHAR vorname VARCHAR Anschrift VARCHAR email VARCHAR Agentur Id_firma INT firma VARCHAR Ich wollte mal die Daten von user.id_firma ins agentur.firma mit einer kopieren. ich es schon id_firma von einem String to INT verwandelt habe. Es gab schon Daten die immer noch als string in user gespeichert sing in der INSERT INTO()-Fktion. diese Daten wollte ich in agentur.firma reinziehen und auch die user.id ins agentur.id_firma. ich habe schon versucht mit dieser Operation oben ohne Erfolg. ich habe ein error INSERT INTO test.agentur SELECT test.user.id_firma AS firma FROM test.user; ERROR 1136 (21S01): Column count doesn't match value count at row 1 Ich hoffe es war explicit genug MFG Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 11. Januar 2009 Teilen Geschrieben 11. Januar 2009 user id INT id_firma INT (frueher als VARCHAR) name VARCHAR vorname VARCHAR Anschrift VARCHAR email VARCHAR Agentur Id_firma INT firma VARCHAR <= Du hast hier 2 Spalten !!!!!!!! INSERT INTO test.agentur SELECT test.user.id_firma AS firma [B]<= hier hast Du aber nur eine Spalte [/B] FROM test.user; Du musst genauso viele Spalten in den Insert aufnehmen, wie Du auf der Tabelle hast! Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
morris_m Geschrieben 11. Januar 2009 Autor Teilen Geschrieben 11. Januar 2009 es hat funktioniert danke. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Forcid Geschrieben 11. Januar 2009 Teilen Geschrieben 11. Januar 2009 Magst deine Lösung noch posten? Wär vllt hilfreich für andere... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
morris_m Geschrieben 11. Januar 2009 Autor Teilen Geschrieben 11. Januar 2009 Danke Phil, Also was du mit den Spalten gemeint hattest, war sehr hilfreich. Ich habe die agentur spalte von id_firma weggemacht und einfach die Operation gefuehrt. Also ich hatte 1 spalte von user.id_firma und 1 spalte agent.firma. Am Ende habe ich nur die VARCHAR wieder mit INT zurueckgebracht und TADA!! Laeuft. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.