grill-it
Goto Top

SQL Join Felder nicht editierbar

Hallo zusammen,

ich habe eine (My)SQL Abfrage über zwei Tabellen formuliert.
Allerdings habe ich jetzt das Problem, dass ich die Ausgegebenen Datensätze nicht ändern kann. Wie bekome ich das Problem sinnig und einfach gelöst?

Es gibt eine Tabelle "Projekte" diese hat als Primären Schlüssel eine laufende Nummer.
über eine weitere Tabelle "Zusatz" mit der Laufenden Nummer aus der anderen Tabelle als Fremdschlüssel, kann den Projekten ein weiteres "Zusatzfeld" (im Frontend) zugeweisen werden um einen Status anzugeben. (bspw. erledigt).
Jetzt soll dieses "Zusatzfeld" für Projekte die bestimmte Kriterien erfüllen einen Wert zugewiesen bekommen.

Mit Meiner Abfrage bekomme ich zwar ide Projekte, welche diese Kriterien erfüllen angezeigt, ebenso wie das Zusatzfeld, aber ich kann dieses nicht editieren.

Die Abfrage sieht wie folgt aus:

Select	
                `projekte`.`LfdNr`,
		`projekte`.`projektnummer`,
		`projekte`.`projekt`,
		`projekte`.`LfdNr_Phase`,
		`zusatz_projekt`.`f_209252`
from `projekte` join `zusatz_projekt` ON `zusatz_projekt`.`projekt_lfdnr` = `projekte`.`LfdNr`;


Mit Google bin ich nicht wirklich weitergekommen...
Vielleicht kann mir hier jemand ja kurz und Prägnant erklären was ich falsch mache bzw wo mein Denkfehler liegt face-smile

Danke schonmal,
LG Manu

Content-ID: 380002

Url: https://administrator.de/contentid/380002

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

eisbein
eisbein 12.07.2018 um 08:57:50 Uhr
Goto Top
Hallo!

Mit SELECT bekommst du Ergebnisse
mit UPDATE kannst du bestehende Datensätze ändern,
und mit INSERT kannst du neue Datensätze in eine Tabelle schreiben.

Gruß
eisbein
grill-it
grill-it 12.07.2018 aktualisiert um 09:19:44 Uhr
Goto Top
Danke..
das ist mir bewusst.
Aber ich wollte das ganze Testweise über die grafische Ausgabe der Tabelle in mysql machen.
und ist bei der obigen angegebenen SQL Anweisung keine Spalte / Kein Feld editierbar.
Dahingegen wenn ich eine normale SELECT Query (ohne join usw) mache sind die Felder eben editierbar.

"Die aktuelle Markierung enthält keine eindeutige („unique“) Spalte. Gitter-Bearbeitungsfunktion, Kontrollkästchen, Bearbeiten, Kopieren und Löschen von Links sind nicht verfügbar. "

ist bspw. eine Ausgabe von phpmyadmin.

Daher gehe ich mal davon aus, dass ein Update da auch nich hinhaut..?
Bzw wie müsste ich das dann aufbauen...?

Edit:
So in etwa?

UPDATE `zusatz_projekt` As ZP INNER JOIN `Projekte` AS P
	On `zusatz_projekt`.`projekt_lfdnr` = `projekte`.`LfdNr` Where `projekte`.`LfdNr_Phase` != 2 and `projekte`.`LfdNr_Phase` !=4 and `zusatz_projekt`.`f_209252` != "erledigt"  
	SET `ZP.f_209252` = "erledigt";  



LG, Manu
it-frosch
it-frosch 12.07.2018 aktualisiert um 09:22:37 Uhr
Goto Top
Hallo Manu,

ich habe dein Problem bei MSSQL auch wenn ich mal vergesse den PK mit im Select aufzunehmen.
Danach klingt auch deine Meldung:

"Die aktuelle Markierung enthält keine eindeutige („unique“) Spalte. Gitter-Bearbeitungsfunktion, Kontrollkästchen, Bearbeiten, Kopieren und Löschen von Links sind nicht verfügbar. "  

grüße vom it-frosch
eisbein
Lösung eisbein 12.07.2018 aktualisiert um 09:38:03 Uhr
Goto Top
Hallo!

phpmyadmin

Ja - zeigt hier keinen "Bearbeiten"-Button an. Frag mich nicht warum, ggf. nicht vorgesehen.

Der Syntax für Update mit Join lautet in etwa so:
 UPDATE TABLE_A a JOIN TABLE_B b ON a.join_col = b.join_col AND a.column_a = b.column_b JOIN TABLE_C c ON [condition] SET a.column_c = a.column_c + 1 

In deinem Fall dann:
UPDATE   `projekte` join `zusatz_projekt` ON `zusatz_projekt`.`projekt_lfdnr` = `projekte`.`LfdNr` 
SET    projekte`.`LfdNr_Phase`='eledigt'   
WHERE  (`projekte`.`LfdNr_Phase` <> 2 and `projekte`.`LfdNr_Phase` <> 4 and `zusatz_projekt`.`f_209252` <> "erledigt")  

Gruß
eisbein
grill-it
grill-it 12.07.2018 aktualisiert um 09:59:40 Uhr
Goto Top
Hi Eisbein,

ok.. dann habe ich das also grundlegend richtig verstanden und versuche mal mein Glück ;)

Danke erstmal face-smile

Edit: Hat geklappt face-smile
bloodstix
bloodstix 17.07.2018 um 14:54:42 Uhr
Goto Top
Hallo,

phpmyadmin zeigt bei bestimmten Abfragen keinen Bearbeiten-Button an, weil es die einzelnen Spalten nicht mehr den einzelnen Tabellen zuordnen kann. Wenn du in einem JOIN etwas updaten willst, musst du das manuell - also schriftlich - machen, oder MySQL-Workbench (Windows/Linux UI Anwendung) nutzen.

Gruß
Bloody