Einfache Datenbankabfrage

H

Hallo123

Gast
Folgende Ausgangssituation: Ich habe zwei Tabellen, in beiden ist der Primärschlüssel eine simple Zahl. Ich will das mit jedem Anlegen eines neuen Datensatzes, egal in welche der beiden Tabellen diese Zahl sich um eins erhöht, sprich:
Erster Eintrag in Tabelle 1 hat pnr(primärschlüssel) 1, der zweite in Tabelle 2 soll dann nicht die 1 erhalten können, sondern die 2.

Hintergrund dafür ist, dass es von einer GUI aus nicht einsehbar ist, ob eine Zahl bereits in einer anderen Tabelle existiert und für den Abruf jede Zahl nur einmal existieren soll. Ich suche als noch einer Art while Methode, die diesen SQL Zugriff steuert. Ich hoffe es ist einigermaßen verständlich.
 

Lodorvonhal

Mitglied
Also es kommt schon mal drauf an was für eine Datenbank zu nutzt. Einige DBMS unterstützen auto increment. damit kannst du eine ID immer erhöhen.

Das kannst du dan abrufen und hast somit die anzahl der Datensätze.

In anderen DBMS müsstest du mit Sequenzen arbeiten.
 
H

Hallo123

Gast
Ich nutze InnoDB, würde es aber dennoch erstmal lieber auf eine andere Art probieren. Also angenommen ich wähle in meiner GUI über zwei Radiobuttons in welcher Tabelle der Datensatz angelegt wird. Beim Anlegen soll er also mit der Zahl 1 anfangen und bei beiden tabellen abfragen ob die 1 existiert und wenn ja um 1 erhöhen bis diese nicht mehr in den tabellen existiert und dann den neuen Datensatz mit der entsprechenden aufaddierten Nummer anlegen.

Oder funktioniert das auto increment derart leicht?

Würde mich über Codes sehr freuen, da ich ehrlich gesagt keine Ahnung habe wie ich das anstellen soll:)
 
H

Hallo123

Gast
Anzumerken wäre ja auch, dass er im Falle von auto increment zwei Tabellen berücksichtigen müsste.
 

Lodorvonhal

Mitglied
Das DBMS kenn ich leider nicht.
wenn das deine Datenbank unterstüzt ist das autoincrement sehr simpel.
bei MySQL unterstützt es zb. schau mal hier MySQL :: MySQL 5.0 Reference Manual :: 3.6.9 Using AUTO_INCREMENT

du legst für deine Tabelle einen index an. In der regel ID dieser wird mit "AUTO_INCREMENT" beschrieben

Code:
CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,

Das Bsp. zeigt wie sowas gemacht wird.

wenn du jetzt einen neuen Datensatz in der tabelle erzeugst wird die ID vom dem DBMS automatisch erhöht. diese ID kannst du dir ja dann an anderer stelle abrufen und überprüfen welches die höchste momentan ist.

@dit sehe gerade das dein InnoDB auf Mysql5 aufbaut. müsste also alles funzen wie ich es beschrieben habe.
 
M

Marcinek

Gast
Sein DBMS ist MySQL mit Tabellen vom Typ InnoDB. Diese erlauben ein Transaktionshandling ;)
 
H

Hallo123

Gast
Also funktioniert die abfrage auch über mehrere tabellen?Sry dass ich so dumm fragen muss aber sitze gerade vorm Handy und kann es nicht testen
 
H

Hallo123

Gast
Hört sich ja beruhigend an...kannst du kurz allgemein erklären wie das auszusehen hat oder wird das im oben geposteten Tutorial erklärt?
 
M

Marcinek

Gast
Ich schlage vor du schaust dir das Tutorial an und nutz ein wenig logisches Denken, dann klappt das.
 
H

Hallo123

Gast
Ich habe das beschämende Gefühl, dass es mit der Logik nicht sonderlich gut bei mir funktioniert und google will mir nur ausspucken, dass auto_increment nicht über 2 tabellen hinweg funktioniert. Kann mir ncith einer ein Beispiel liefern wie das funktionieren könnte?
 

faetzminator

Gesperrter Benutzer
Ich würde mir da auch eine dritte Tabelle erstellen. Diese benötigt 3 Informationen: Die eigene ID (die du willst), die ID (primary) der anderen Tabelle und irgendwie noch die Information, in welcher Tabelle dieser Datensatz nun ist.
 
S

Spacerat

Gast
Also in diesem Fall mal ganz banal... Sofern es nur 2 Tabellen sind, die zusammengefügt werden sollen, genügt eine 3. Tabelle mid den Feldern (ID-Map):

1. id (int)
2. table1_id
3. table2_id

Unmittelbar nachdem in Tabelle 1 ein Datensatz eingefügt wurde, muss sich die Insert-ID dieses Datensatzes geholt und zwischengespeichert werden. Danach erst sollte man den entsprechenden Datansatz in Tabelle 2 einfügen und sich ebenfalls die Insert-ID holen. Diese beiden IDs speichert man nun halt in der 3. Tabelle. Die nun zurück gelieferte Insert-ID ist das gültige auto_increment für beide Tabellen.

Was ich mich Frage: Warum ist's denn wichtig, dass ein primärer Index auf 2 Tabellen angewendet werden soll? Jene Indexschlüssel sollten in Datenbanken wirklich nur zur Identifizierung eines Datensatzes zwecks schnelleren Zugriff dienen. Ist, wenn man so will, wie mit Namenskonventionen in einer Programmiersprache - man kann es beachten, muß man aber nicht ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L einfache Datenbankabfrage ohne erstes Element Datenbankprogrammierung 2
RowdyN SQLite Einfache Abfrage mit temporäre Tabelle, die nur innerhalb der Abfrage gültig ist Datenbankprogrammierung 0
K SQLite Einfache DB-Abfrage Datenbankprogrammierung 2
E einfache Frage bei DB-Zugriff Datenbankprogrammierung 11
C MySQL Einfache Variablenuebergabe Datenbankprogrammierung 2
R Einfache JDBC-Datenbank mit Admin-Client Datenbankprogrammierung 4
E Einfache Abfrage funktioniert nicht Datenbankprogrammierung 3
P einfache DB-Verbindungsklasse Datenbankprogrammierung 4
L Datenbankabfrage mit loop Datenbankprogrammierung 17
N MySQL Datenbankabfrage oder Arraylist? Datenbankprogrammierung 2
J Datenbankabfrage / Teilmengen Datenbankprogrammierung 2
S MySQL JTable zeigt nach Datenbankabfrage eine Spalte zu viel an Datenbankprogrammierung 0
S MySQL Datenbankabfrage mit Eingabe aus Textfeld vergleichen Datenbankprogrammierung 4
C Modellierung Datenbankabfrage Datenbankprogrammierung 1
W SQL-Statement Datenbankabfrage über Yahoo Datenbankprogrammierung 0
B Fehlerhafte Datenbankabfrage Datenbankprogrammierung 3
H Oracle Datenbankabfrage ausgeben Datenbankprogrammierung 13
E MySQL Anzeige Datenbankabfrage in Textfeld o.ä. Datenbankprogrammierung 34
L Datenbankabfrage mit einer Range Datenbankprogrammierung 3
Y JDBC - Datenbankabfrage Webserver Datenbankprogrammierung 4
E H2 - Datenbankabfrage gibt NULL aus? Datenbankprogrammierung 4
S ResultSet einer Datenbankabfrage - Nullpointer Exception Datenbankprogrammierung 13
F Problem mit Datenbankabfrage Datenbankprogrammierung 7
M Problem bei einfacher Datenbankabfrage Datenbankprogrammierung 7
W Problem mit Datenbankabfrage Datenbankprogrammierung 3
S Datenbankabfrage mit Applet Datenbankprogrammierung 13
A Datenbankabfrage mit KeyListener Datenbankprogrammierung 5
C Rückgabetyp einer Datenbankabfrage Datenbankprogrammierung 12
V Datenbankabfrage in einem Textfeld ausgeben Datenbankprogrammierung 3
E Nochmal eine Datenbankabfrage Frage :-o (JOIN oder so) Datenbankprogrammierung 4
R NUllPointerException bei Datenbankabfrage Datenbankprogrammierung 4
A SQL Datenbankabfrage in Array speichern Datenbankprogrammierung 3
P Datenbankabfrage MYSQL aus Applet heraus Datenbankprogrammierung 6
D Datenbankabfrage will nicht funktionieren Datenbankprogrammierung 5
C vergleichende Datenbankabfrage Datenbankprogrammierung 5
G datenbankabfrage Datenbankprogrammierung 4
A datenbankabfrage in sql mit java Datenbankprogrammierung 32
T Nochmal Datenbankabfrage Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben