wenn Daten aus T1 in auch T2 schreibe sie in T3

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
schluebby
Mitglied
Beiträge: 11
Registriert: 13.03.2007 20:52

wenn Daten aus T1 in auch T2 schreibe sie in T3

Beitrag von schluebby »

Hallo zusammen,

ich weiß nicht mehr weiter...

Theorie:
Ich habe Tabelle 1 (t_user) und Tabelle 2 (t_gruppe). Möchte aus Tabelle 1 die Datensätze wählen, die auch den Kriterien in Tabelle 2 entsprechen und sie in Tabelle 3 (t_auswahl) kopieren.

Problem:
Die Select-Abfrage gibt mir via echo die richtigen Zeilen aus. Aber mit dem Insert klappt es leider nicht. Es wird nichts in Tabelle 3 gefügt.

Script:
$befehl = "INSERT INTO t_auswahl (id, name, gruppe, status, daten)
SELECT *
FROM t_user
INNER JOIN t_gruppe
ON ( t_auswahl.gruppe = t_gruppe.gruppe) WHERE t_gruppe.status < 0
;";


Kann mir wer folgen? Wäre super, das beschäftigt mich nämlich schon seit einiger Zeit.

Eine ähnliche Abrfrage mit gleicher Code-Struktur funktioniert, Unterschied ist nur, bei jener Abfrage gibt es lediglich 2 Tabellen.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Gibt der DB Server einen Fehler aus?
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
schluebby
Mitglied
Beiträge: 11
Registriert: 13.03.2007 20:52

Beitrag von schluebby »

nein, leider gar nichts. leere php seite und leere datenbanktabelle.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Und wenn DU diesen Befehl direkt im phpMyAdmin eingibst?

Code: Alles auswählen

INSERT INTO t_auswahl (id, name, gruppe, status, daten)
SELECT *
FROM t_user
INNER JOIN t_gruppe
ON ( t_auswahl.gruppe = t_gruppe.gruppe) WHERE t_gruppe.status < 0
;
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
schluebby
Mitglied
Beiträge: 11
Registriert: 13.03.2007 20:52

Beitrag von schluebby »

Code: Alles auswählen

#1136 - Column count doesn't match value count at row 1 
müssen vielleicht ALLE drei tabellen die gleiche Anzahl Felder haben?
Tab2 hat weniger als Tab1 und Tab3. Aber es soll ja auch nur mit Tab2 verglichen werden. Die Tabellenanzahl der Daten, die Übergaben werden, sind schon gleich. Oder missinterpretiere ich das?
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Ändere einfach das SELECT * und gib die Spaltennamen genau an (das ist sollte man sowieso immer machen - siehe SELECT * is evil).
KB:knigge
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

schluebby hat geschrieben:

Code: Alles auswählen

#1136 - Column count doesn't match value count at row 1 
Das habe ich mir schon gedacht. Pyramide hat schon die Antwort entsprechend gepostet.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
schluebby
Mitglied
Beiträge: 11
Registriert: 13.03.2007 20:52

Beitrag von schluebby »

Code: Alles auswählen

INSERT INTO t_auswahl (id, name, gruppe, status, daten)
SELECT t_user.id, t_user.name, t_user.gruppe, t_user.status, t_user.daten
FROM t_user
INNER JOIN t_gruppe
ON ( t_auswahl.gruppe = t_gruppe.gruppe) WHERE t_gruppe.status < 0
;
ah, vielen Dank! So geht's :D .

(Das war ja ne schwere Geburt.)
Antworten

Zurück zu „Coding & Technik“