3 Tabellen updaten

Wenn ich das bei mir mit deinen Angaben teste, funktioniert es.
Also hast du irgendwo ein Chaos mit den Feldnamen.
 
Habe alle Feldnamen nochmal geprüft, alles in Ordnung.
Ich bin da gerade über etwas gestolpert, kann es sein daß Mysql V3 das noch nicht kann?
 
Das ist Standart-SQL. Das muss es können.

Irgendiwe habe ich ein Chaos wenn ich deine Beiträge lese. Mal heisst es EK, dann erscheint irgendwoher ein Preis der aber in deiner knappen Datendefinition nicht enthalten ist.

1) Poste doch mal die Create-Sqls deiner Tabellen.
2) poste die Beziehungen zwieschen den Tabellen.
3) Poste welches Feld mit welchem Feld updatet werden muss.
 
Erstmal vielen Dank daß du so geduldig mit mir bist :)

So, hier mal die Tabellen und ein Versuch die Abhängigkeiten zu veranschaulichen.

Artikel--------Artikel_Preis-----Preis_Update

REC_ID -> Artikel_ID
Barcode<--------------------------Barcode
Adress_ID<-------Liefer_ID
.....................Preis<--------------EK_Preis

Ich hoffe Du kannst damit was anfangen.
 

Anhänge

  • tabellen.zip
    1,6 KB · Aufrufe: 14
Also, ich denke etwa so sollte es so funktionieren wie ich das verstanden habe

- In ARTIKEL werden die Artikel mit dem Barcode gespeichert (REC_ID als Id des Artikels)
- In ARTIKEL_PREIS wird der Preis pro Lieferant gespeichert. (Lieferant is definiert über ADRESS_ID, der Artikel über ARTIKEL_ID)
- in der Tabelle preis_update stehen die neuen Preise der Lieferanten mit dem Barcode


SQL:
UPDATE 
	artikel a, 
	artikel_preis p, 
	preis_update u 
SET 
	p.preis = u.ek_preis
WHERE 
	a.BARCODE = u.BARCODE 
	AND p.ARTIKEL_ID = a.REC_ID
	AND u.LIEFER_ID = p.ADRESS_ID
 
Zuletzt bearbeitet von einem Moderator:
Hm.. oder sollte das mit MySQL 3 wirklich nicht funktionieren....

Kannst du nicht die DB auf einen aktuellen Stand bringen? MySQL 5.x währe schon besser...
 
Was immer eine WaWi auch sein mag.

Es gibt noch komplexere Strukturen, die ohne mehre Tabellen im SELECT-Teil funktionieren.
Ob diese jedoch mit MySQL3 gehen weiss ich nicht

SQL:
UPDATE
	artikel_preis p
SET
	preis = (
		SELECT
			u.ek_preis
		FROM
			artikel a
			INNER JOIN preis_update u 
				ON a.BARCODE = u.BARCODE
		WHERE			
			p.ARTIKEL_ID = a.REC_ID
			AND u.LIEFER_ID = p.ADRESS_ID	
	)
WHERE
	p.ADRESS_ID IN 		(
							SELECT 
								u.LIEFER_ID 
							FROM 
								preis_update u
						)
	AND p.ARTIKEL_ID IN (
							SELECT 
								a.REC_ID 
							FROM 
								artikel a
								INNER JOIN preis_update u 
									ON a.BARCODE = u.BARCODE
						)

Oder ein wenig schöner
SQL:
UPDATE
	artikel_preis p
SET
	preis = 
	(
		SELECT
			u.ek_preis
		FROM
			artikel a
			INNER JOIN preis_update u 
				ON a.BARCODE = u.BARCODE
		WHERE			
			p.ARTIKEL_ID = a.REC_ID
			AND u.LIEFER_ID = p.ADRESS_ID	
	)
WHERE
	(p.ARTIKEL_ID, p.ADRESS_ID) IN
		(
			SELECT 
				a.REC_ID,
				u.LIEFER_ID 
			FROM 
				artikel a
				INNER JOIN preis_update u 
					ON a.BARCODE = u.BARCODE
		)
 
Zuletzt bearbeitet von einem Moderator:
So, jetzt ist es ganz sicher!
Mysql kann diese Art abfragen erst ab Version 4.1 und ich konnte die Wawi (Warenwirtschaft) dazu überreden damit auch zu funktionieren.
Ich dachte schon das wird nix mehr.

Vielen, vielen Dank für deine Zeit, Geduld und dein investiertes Hirnschmalz!
Du warst mir eine wirklich große Hilfe, deine Abfrage funktioniert jetzt.
 

Neue Beiträge

Zurück