Andreas: id in versch. Tabellen zuordnen ?

Hallo,
ich habe in meiner DB mehrere Tabellen, jede Tabelle hat ein Feld ID. Nun sollen die Einträge in den Tabellen immer eindeutig zueinander passen. In einer Tabelle lasse ich den Zähler(ID) durch auto_increment erhöhen.
Wie kann ich nun Daten, der gleichen ID in die anderen Tabellen schreiben?

Ich könnte auch dort den Zähler ID erhöhen doch was ist wenn durch Zufall manuell ein eintag aus nur einer der Tabellen gelöscht wird, dann hat der Eintrag eine niedrigere ID.

Ich hoffe ihr habt verstanden was ich will, es ist für mich etwas schwer zu beschreiben gewesen.

MfG. Andreas

  1. Bei SQL gibt es doch die Max()-Funktion, mit der kannst Du doch den höcchsten ID-Wert Deiner autincrement-Tabelle ermitteln nachdem Du dort einen neuen Datensatz erzeugt hast. Das dürfte ja dann selbiger sein.
    Oder Du schmeißt dieses dumme autoincrement ganz raus und suchst als allererstes den höchsten Eintrag in einer Tabelle und erhöhst ihn manuell für den neuen Datensatz.

    Hallo,
    ich habe in meiner DB mehrere Tabellen, jede Tabelle hat ein Feld ID. Nun sollen die Einträge in den Tabellen immer eindeutig zueinander passen. In einer Tabelle lasse ich den Zähler(ID) durch auto_increment erhöhen.
    Wie kann ich nun Daten, der gleichen ID in die anderen Tabellen schreiben?

    Ich könnte auch dort den Zähler ID erhöhen doch was ist wenn durch Zufall manuell ein eintag aus nur einer der Tabellen gelöscht wird, dann hat der Eintrag eine niedrigere ID.

    Ich hoffe ihr habt verstanden was ich will, es ist für mich etwas schwer zu beschreiben gewesen.

    MfG. Andreas

    1. Hallo,
      daran hatte ich auch schon gedacht das ich zuerst den höchsten Eintrag suche und dann die ID jeder Tabelle zuweise. Ich denke da ich noch nicht sehr viel Ahnung von MySQL habe ist das das beste.

      Ich werde aber mal in meinem Buch blättern ob ich Beschreibungen zu Euren Idee finde.

      MfG. Andreas

      1. Hallo Beschreibung zur Idee:
        Also:
        Tabelle 1(Adresse)

        a_id: Primärschlüssel (Autoincrement) (int)
        a_name:Text (oder was weiss ich auch immer)
        .....

        Tabelle 2 (Firma)
        f_id: Primärschlüssel(autincrement) (int)
        f_a_id: Sekundaärschlüssel (int)
        f_name: Text

        Nun fügst du über insert Into.... ganz normal einen Datensatz in Tabelle 1 ein.
        $new_id= mysql_insert_id();
        liefert Dirt die neue ID
        et voila, Du kannst dann mittels Insert INTO tabelle2
        SET
        id='',
        f_a_id='$new_id',
        f_name ='name',

        Ganz normal die beiden Tabellen miteinander verknüpfen.
        Noch fragen?

        Viele Grüße aus Berlin

        TomIRL

      2. Hello,

        daran hatte ich auch schon gedacht das ich zuerst den höchsten Eintrag suche und dann die ID jeder Tabelle zuweise. Ich denke da ich noch nicht sehr viel Ahnung von MySQL habe ist das das beste.

        Die Lösung ist Dir schon genannt worden:
        Nach dem Einfügen in die "linke Tabelle" ermittelst Du z.B. mit mysql_insert_id() die automatisch zugeteilte ID. http://de.php.net/manual/de/function.mysql-insert-id.php. Die benutzt Du dann als Fremdschlüssel für die "rechte Tabelle".

        insert into rechts set
         ID_links = $lastid,#
         wert     = $wert,
         blah     = $blubb;

        Zu beachten dabei ist eben, dass es sich einmal um einen Primärschlüssel und einmal um einen Sekundärschlüssel (Fremdschlüssel) handelt. Die rechte Tabelle hat auch einen eigenen Primärschlüssel; der ist aber nicht betroffen und kann vom DBMS ganz frei vergeben werden (als Unikat versteht sich)

        Hier sind noch zwei Links, der ganz lesenswert ist für Datenbank Beginners:
        http://www.schule.bayern.de/texte/datenbanktheorie.pdf
        http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/index.htm

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  2. Hallo,
    ich habe in meiner DB mehrere Tabellen, jede Tabelle hat ein Feld ID. Nun sollen die Einträge in den Tabellen immer eindeutig zueinander passen.

    warum nimmst du nicht Fremdschlüssel?

  3. hi,

    die meisten Datenbanksysteme geben die id der letzten insert anweisung zurück. diese kannst du verbunden mit einen trigger dazu benutzen, einen entsprechenden eintrag in der andere tabelle vorzunehmen.

    Ilja