PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SELECT auf Spalten mit gleichem Namen, in verschiedenen Tabs, innerhalt der Datenbank


Lisa4986
29.05.2008, 14:48:15
Hallo, ich habe eine kurze Frage:

Meine Datenbank hat mehrere Tabellen.
In manchen dieser Tabellen gibt es die Spalte "Store_ID".
Kann ich irgendwie einen bestimmten Wert z.B.: 0004 in all diesen Spalten in den Tabellen selektieren und dann ersetzen?

Was ich erreichen will ist einfach, dass wenn ich meine Store_ID irgendwo ändere alle Refezenzen, die darauf noch zeigen ebenfalls geändert werden, ohne alle manuell suchen zu müssen.

Ist schwer zu erklären :( Hoffe, jemand versteht mich :(

glg Lisa

Opendix
29.05.2008, 15:49:19
irgendwie müsste das wohl mit einem UPDATE schon gehen..
Aber wenn du mich fragst hast du hier einen Fehler in deinem Datenbankdesign!

Tumasch
30.05.2008, 13:59:36
mach gescheiter eine neue tabelle mit store_id und zielid und lies es von der aus. alles andere ist komplex und fehleranfällig.

und wenn du wirklich die store_id für irgendetwas anderes brauchst als für den primärschlüssel dann ist das definitiv ein fehler im design!

Lisa4986
02.06.2008, 09:52:11
Die Store_ID ist in den anderen Tabellen ja ein Fremdschlüssel zur Verknüpfung...
Ich möchte einfach nur diesen Schlüssel in allen Tabellen finden, auslesen und ersetzen...
Gibt es da ne Möglichkeit mit Triggern? Kenn mich damit nur echt garnit aus...?!?

lg Lisa

Opendix
02.06.2008, 12:31:39
Du musst mir erstmal erklären, warum du sämtliche Einträge der Store_ID in irgendwelchen Tabellen finden möchtest? Ich finde momentan beim besten Willen keine Verwendung dafür (vielleicht hab ich auch grad ne Denkblockade.. weiss nicht :P)

Lisa4986
02.06.2008, 12:49:09
Pass auf...
Ich hab die Store Tabelle in der die Store ID steht und halt weitere Infos dazu.
Diese Tabelle ist über eine Verbindungstabelle mit der Contact Tabelle verknüpft, in der die Kontaktinfos (Adressdaten) zum Store drin stehen.
Diese Zwischentabelle beinhaltet also die ID der Tabelle (also den Primärschlüssel der Verbindungstabelle), die Store_ID und die Contact_ID. Über diese Tabelle ermögliche ich es zum Store mehrere Contact Datensätze einzufügen.

Und genau wie dieses Beispiel gibt es noch andere Infeos die ähnlich verknüpft sind.

Wenn ich jetzt aber Die Store ID in der Store Tabelle ändere, dann hab ich das Problem, dass er die Verknüpfung zur Contact Tabelle nicht mehr kennt, weil diese Store ID ab dann nicht mehr existiert. Und genau das möchte ich abfangen...ohne, dass ich jede der kleinen Tabellen da anpacken und ändern muss...

Rein logisch hätt ich sowas wie das hier gern...

Select Store_ID from store, contact, usw... where Store_ID=1234

Sinnhaftigkeit: Selektier mir jetzt mal in allen genannten Tabellen die Store_ID mit der Nummer 1234.

Kannst du dir jetzt mehr darunter vorstellen??

lg Lisa

Opendix
02.06.2008, 13:32:28
Nein, denn warum änderst du den primary-key (ich nehm mal an, dass die store_id in der store-tabelle der primary-key ist) in der Store-Tabelle? :S

Lisa4986
02.06.2008, 13:59:24
Ja, die Store_ID ist der primärschlüssel! Weil es vorkommen kann, dass man sich bei der Eingabe der Store_ID vertippt hat. Und es wäre wohl unnötig, dann alle infos, die man gerade mühsam eingegeben hat nochmal zu bearbeiten.
aber du hast auch eig echt recht...nen primary key sollte man vllt nicht ändern lassen...wär echt ne überlegung wert...ich lass es mir mal durch den kopf gehn...aber trotzdem wäre es hilfreich eine lösung für sowas zu kennen....

Opendix
02.06.2008, 15:05:01
Ein Primary-Schlüssel wird nicht geändert! Am besten ist das eine eindeutige ID die per auto_increment vergeben wird!

Das mit der falscheingabe musst du irgendwie anders lösen :P

Hmm.. eigentlich nicht, da man theoretisch dieses Problem überhaupt nie haben sollte!

stb
07.06.2008, 15:17:36
@Opendix
Dem schliesse ich mich an

Sonst gibts nur eins -- ändern :(

UPDATE tabelle set id = $new_id WHERE id = $old_id

Urrrkkss :/
Gibts $new_id jetzt 2mal ???

Hoch lebe auto_increment!

Viel Glück!