UPDATE Problem



  • Hallo,

    ich habe folgendes Problem.

    Ich habe zwei Tabellen.

    Tabelle a und Tabelle b.

    In der Tabelle a sind z.B. 10 Einträge.
    Die ID (PK) wird über autoinkrement hoch gezählt.
    In der Tabelle b ist ein FK auf tabelle a.

    Jetzt ist in der Tabelle b z.b 20 Einträge.
    Jeweils 2 spalten sollen dem gleichen FK auf tabelle a haben.

    Ist kompliziert, drum zeig ich es mal schell

    Tabelle a: Tabelle b:

    ID_a ID_b ID_a
    1 1 1
    2 2 1
    3 3 2
    4 4 2
    5 5 3
    6 3
    7 4
    8 4
    9 5
    10 5

    So sollte es ausehen..... sehr vereinfacht.
    Es müssen nicht zwingend immer 2 sein.

    Weiss jemand wie?



  • simcon schrieb:

    Weiss jemand wie?

    Klar, wenn Du uns jetzt noch verrätst, wo das Problem ist.



  • Das Problem ist, dass ich es nicht weiss wie.....
    Wie bekomme ich es hin, dass die Einträge in der Tabelle b, wo eine Spalte die gleichen Werte hat, den gleichen FK aus Tabelle a hat....$



  • Nee, das ist nicht verständlich, was Du fragst. Wir kennen doch Dein Problem nicht. Formuliere es etwas deutlicher, vielleicht mit einem Beispiel.



  • Ich probier es nochmal.

    Ich habe in der Tabelle a z.B 5 Objekte.
    Zu dieser Tabelle gibt es eine weitere, Tabelle B.

    1 Objekt der Tabelle a kann ein oder mehrere Objekte der Tabelle b haben.

    Also gibt es in der Tabelle b Objekte, die zur tabelle a gehören.
    So sind z.b 15 Objekte in der Tabelle b.
    Nun möchte ich in der Tabelle b, den FK zur Tabelle a eintragen.

    z.B so:

    Tabelle b
    ---------
    ID b    FK_Tabelle_a
    1        1
    2        1
    3        1
    4        2
    5        2
    


  • Aber der steht doch schon drin: 1,1,1,2,2 😕
    Oder meinst Du die Frage, wenn Du etwas in Tabelle A einfügst und den evtl. automatisch generierten Schlüsselwert erhälst, damit Du ihn in B einfügen kannst?



  • Das ist ja nur ein Beispiel.
    So sollte die Tabelle b aussehen.
    Ich möchte, das z.b die ertsen 3 Einträge (was nicht heissen soll, dass es immer 3 sind) den gleiche FK haben (z.B 1). Die nächsten2 oder 3 oder 4 (je nach dem)
    den nächsten FK usw.



  • Dann sortiere doch.
    SELECT * FROM b ORDER BY fgn_key;
    In der Datenbank werden Zeilen nicht sortiert abgelegt, dass mußt Du explizit beim SELECT veranlassen.



  • Das steht doch noch gar nicht in der Tabelle b drin.
    Die Fk zur Tabelle a müssen doch erst noch in die Tabelle b geschreiben werden.
    Genau das ist doch das Problem.
    Wie kann ich sagen, das diesretn 5 einträge ( die natürlich auch eine abhängigkeit haben) den FK 1 haben usw...?



  • Irgendwie ist die Frage immernoch nicht verständlich.

    Wenn es darum geht, beim Insert in Tabelle B den Primarykey aus Tabelle A als Feldwert einzufügen, dann tu das doch einfach?!

    INSERT INTO tabelle_b (autokey, fk_tabelle_1, ...) VALUES (NULL, key_aus_tabelle1, ...)
    


  • Mir fehlt ganz einfach die Abfrage, dass er solange den FK z.b. Wert 1 in die Tabelle b schreibt.

    id                      id_tabelle_a
    1                       1
    2                       1
    3                       1
    4                       1
    5                       1
    6                       1             
    7                       1
    8                       1
    9                       1
    10                      1
    11                      1
    12                      1
    13                      1
    14                      1
    15                      2
    16                      2
    17                      3
    18                      4
    19                      5
    20                      6
    21                      6
    

    Das ist ein Beispiel, wie es aussehen soll.
    Das Eintragen der id_tabelle_a ist das Problem.
    Es muss ja irgend eine Schleife geben, die mir solange den Wert einfügt, wie ich will.



  • Vielleicht solltest Du die Anwendungslogik erklären. Normalerweise hat man in der App den Fremdschlüssel parat. Z.B. Kunden-Rechnungen schreiben, irgendwo muss doch der Kunde ausgewählt worden sein, dessen Rechnungen man legen will. Dann kann man von dort einfach seinen Primwert übernehmen, aus einer Combobox, einem Datencursor oder sonst woher.



  • Ich seh schon, dass es zu kompliziert ist, um es richtig zu erklären.
    Ich melde mich wieder......

    CU



  • Ist das denn egal welche spalte welchen verweiss hat?
    Ich hab verstanden was du willst aber verstehe nicht wieso du das brauchst hihi :).

    Also mit sql grad fällt mir keine lösung ein du brauchst ja sowas wie eine schleife die dir besagt das er dir die einträge setzen soll bis (einschließslich) %2. und dir dann jeweils var++ macht.

    Wenn das direkt nicht geht musst du halt über deinen Programm code das bewältigen... glaub du brauchst halt nen batch lauf



  • mir stellt sich die frage woher du weißt welche row in table_B zu table_a gehört.
    wenn du diese frage beantworten kannst dann hast du auch deine query.


Anmelden zum Antworten