Insert into... Tabelleinhalt wurde durch Join angezeigt

keks1984

Erfahrenes Mitglied

SO guten Morgen oder einfach HALLO :)

tut mir Leid dass mein Titel nicht so der Hammer ist aber ich wußte nicht wie ich das schreiben soll!

Also erstmal zur Erklärung! Ich hab eine GridView in einer asp.net Seite und da in ner Tabelle verchiedene FK sind, brauch ich zur Anzeige ein Join! Sprich in der DB steht z.B. LKWKategorie = 2 und in der Anzeige in der GridView steht aber LKWKategorie = LKW groß. Wenn nun ein Benutzer diese Tabelle updated dann kann er aus einer DropDownList die gewünschte LKWKategorie wählen! Problem ist nur dass ja nun das update nicht geht weil ein String in eine int-Spalte gespeichert werden soll. Hab jetzt versucht in dem Insert Statement eine Unterabfrage zumachen um dann die Id der LKWKategorie zu bekommen.

Hier mal die Select abfrage und meine (nicht funktionierende) update:
Code:
SELECT s.Id, s.Name, l.Bezeichner AS LKWKategorie FROM System s, LKWKategorie l WHERE s.Id = 1 AND s.LKWKategorie = l.Id;

die Ausgabe sieht dann wie folgt aus: 1, Beispielname, LKW groß
Code:
UPDATE System Set Id = 2, Name = 'Heinrich', LKWKategorie = (SELECT Id FROM LKWKategorie WHERE Bezeichner = 'kleiner LKW')

Die ganzen Daten (die ich fürs Beispiel festeingegeben hab) bekomme ich eigentlich als Parameter von der GridView übergeben!

SO hoffe jemand hatte sowas auch schonmal und kann mir sagen wie das gehen soll.
 
Zuletzt bearbeitet:
So wie ich dich richtig verstanden habe, hast du das Problem das du in der Combobox z.b. LKW groß ausgeben willst im Hintergrund er aber mit IDs arbeitet? Dann musst du wenn du die Combobox befüllst, der Combobox noch paar Dinge übergeben.

C#:
cmbLkwKat.ValueMember = "LkwKat_Id";
cmbLkwKat.DisplayMember = "LkwKat_Name";
cmbLkwKat.DataSource = Query(...);

Ich vermute jetzt das du über den DataSource deine Combobox füllst.
 
Mmh so hab da jetzt mal mit rumprobiert! Problem ist dass ich eine DropDownList hab und diese hat kein ValueMember und kein DisplayMember! Ja ich befülle DropDown per DataSource.
 

mmh so ich hab die letzten Tage die Sache probiert aber geht nicht! Es gibt bei mir DataValueField und DataTextField wenn ich diese beiden unterschiedlich mache dann gibts Probleme mit der SelectedValue Eigenschaft :) Sehr dumm ich bekomm das Problem auch nicht gelöst!

Also daher nochmal meine Frage gibts die Möglichkeit dass ich irgendwie ins Insert Statement eine Unterabfrage reinmache? Das Update hat nämlich mittlerweile mit ner Unterabfrage funktioniert.
 
Zuletzt bearbeitet:
Hey,

sorry, hatte nicht gesehen das du genatwortet hast. Also das ist ganz einfach. Die Syntax lautet wie folgt (mit Psuedocode :p)

SQL:
INSERT INTO LkwKategorie (id, name)
SELECT id, name FROM Kategorien WHERE Name='Mercedes'
 

Kein Stress :)

Em der sql Code geht aber nur wenn man das nur aus einer Tabelle holt!

Also ich hab in dem Insert Werte die geb ich direkt ein (wie z.B. der Name) und ich hab Werte die hol ich aus ner anderen Tabelle raus (wie z.B. die Id der LKWKategorie) geht sowas auch? Ich hab das probiert mal mit nem "," oder nem "And" zu verbinden aber ging nicht.
 
Zuletzt bearbeitet:
meinst du vielleicht sowas?
SQL:
INSERT INTO system
	(LKWKategorie, Name)
VALUES
	((select id from LKWKategorie where Bezeichner = 'kleiner LKW'),
	'Heinrich')
 
@olgs: Genau das meine ich aber das geht nicht da heißt es im Fehler folgendes:

Unterabfragen sind in diesem Kontext nicht zulässig. Es sind nur Skalarausdrücke zulässig.

Ich weiß jetzt nicht ob das was mit dem FK zu tun hat?! also LKWKategorie ist ein Fremdschlüssel auf die Tabelle LKWKategorie!
 
Hmm im Mysql Query Browser funktioniert die Abfrage. Dann muss es an der DB Verbindung (Treiber) liegen.

Hmm also im ASP.Net Code schauen. Welche Probleme hast du wenn du die DataValueField und DataTextField Eigenschaften setzt?

Gehört aber dann eher in das ASP.Net Forum
 
Na fantastisch sch... DB

Stimmt gehört dann wieder eher ins asp.net Forum.

DataValueField ist "LkwKat_Name" und DataTextField ist "LkwKat_Id" und SelectedValue ist auf "LkwKat_Name"

Dann sagt er mir dass die SelectedValue ein Element beinhaltet das nicht in der Elementenliste ist! Ich hab aber sowohl die Id als auch den Namen in der DataSource!
 

Neue Beiträge

Zurück