UPDATE über drei Tabellen

the_lorn

Mitglied
Hi Ihrs!

Ich weiß gar nicht wie ich euch mein Problem erklären soll also fang ich mal ganz kompliziert an: ;)

Ich habe Tabelle A und B wobei A mehrere Bs haben kann. B hat noch einige Attribute wie S, q, b1, b2, b3. Nun kann in B q mit selben Werten mehrmals vorkommen.
Also zb:
fünf Einträgen mit q=1 und b=x
fünf Einträgen mit q=1 und b=xx.
fünf Einträgen mit q=1 und b=xxx
die anderen werte b2 , b3 sind immer anders .
Nun will ich nur jeweils einen Eintrag Pro gruppe, so dass ich nach meiner Abfrage nur noch drei Datensätze erhalte. Denn ich will nur die unterschiedlichen bs haben, um mit ihnen dann weiter arbeiten zu können.

Aber wie mach ich das? Geht das überhaupt per sql?
Besser: Versteht man wenigsten mein Problemchen?

in pseudocode würd ich sagen: SELECT b FROM B WHERE B.S=A.S AND bi+1 IS DIFFERENT FROM ANY bi-j
So laufindextypisch ;)


Oder mal anders Gefragt:
Habe drei Tabellen A, B, C wobei A mehrere B hat (1--*) und B ein C (*--1)
Nun will ich alle C.x aktualisieren die in A sind.

Ich tu mich irgendwie schwer mit den SQL zeugs:suspekt:, sorry

thanks schon mal

PS: Hat auch Zeit bis morgen....
 
Morgen,

Meinst du mit goupieren die GROUP BY Klausel? Dann bin ich zu blöd denn wenn ich sage Group by q,b spuckt er trotzdem alle Datensätze aus!

legen wir mal den Fokus auf die zweite Frage. Damit würde sich mein erstes Problem erledigen.

Habe folgende Abfrage:

SELECT B.Nr, A.Nr, C.Nr, B.x2, B.x3l
FROM C INNER JOIN (A INNER JOIN B ON A.Nr = B.Nr) ON C.Nr = B.NrC
WHERE (((B.Nr)=[Formulare]![Vertrag]![Nr]))
GROUP BY A.Nr, C.Nr, B.Nr, B.x2, B.x3;

Die Datensätze die ich hier erhalte sind Kandidaten, bei denen ich einen wert in C (C.wert) ändern muss. Nun hät ich also gern gesagt:

UPDATE C SET C.wert=wert für alle SELECT.....(siehe oben)

Da in C aber nur immer ein Datensatz mit der selben C.Nr gibt, bräucht ich also nur die B.NrC jeweils einmal (in B kann NrC mehrmals vorkommen)


ist es jetzt klarer oder immer noch Total verwirrend?



Marten
 
Zurück