ich hab eine Datenbank.
in der Datenbank sind dann ID, Name, Nachname, Filmname1 ,iMDBLink1,Filmname2, imdbLink2, ...
bei Filme kann man da eine Liste adden ?
oder wie mache ich das am besten ?
Anhang an eine neue Tabelle die dann die ID von der 1. übernimmt ?
In der Spalte "Filme" soll dann Filmname und IMDB Link rein.
ich hab dann immer für jeden Film, eine neue Spalte angelegt. Auf Dauer ist das aber Mist
Liste in einer Datenbank adden
habs nun hinbekommen, zumindest zu ändern per DB Browser.
wie addet und updatet man es nun ?
In 2 schritten ?
ich hab nun 2 Tabellen:
DB_Artist
NamesLink
id=SELECT ID FROM DB_Artist WHERE Name='Karl Gustaf'
UPDATE NamesLink SET ArtistLink='https://... ' WHERE NameID={id}
oder geht das auch in einem einzelnen Befehl ?
NamesLink hat -> ID, NamesLink , NameID
NameID steht die ID von DB_Artist drin
wie addet und updatet man es nun ?
In 2 schritten ?
ich hab nun 2 Tabellen:
DB_Artist
NamesLink
id=SELECT ID FROM DB_Artist WHERE Name='Karl Gustaf'
UPDATE NamesLink SET ArtistLink='https://... ' WHERE NameID={id}
oder geht das auch in einem einzelnen Befehl ?
NamesLink hat -> ID, NamesLink , NameID
NameID steht die ID von DB_Artist drin
- __blackjack__
- User
- Beiträge: 13117
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Ernie1412: Das scheint jetzt nicht so viel mit dem Beispiel aus dem ersten Beitrag zu tun zu haben.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Filmname1 ,iMDBLink1,Filmname2, imdbLink2 das ist nun in der DB_NamesLink drin (UPDATE NamesLink SET ArtistLink='https://imdb....)
NamesLink hab ich in DB_NamesLink geändert, nicht das es mit dem Attribute "NamesLink" Verwechselungen gibt.
NamesLink hab ich in DB_NamesLink geändert, nicht das es mit dem Attribute "NamesLink" Verwechselungen gibt.
- __blackjack__
- User
- Beiträge: 13117
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Ernie1412: Da gibt es keine Verwechslungen, es macht keinen Sinn vor jeden Tabellennamen ein DB_ davor zu setzen. Ich würde da auch bei Kleinschreibung bleiben, weil bei SQL kein Namen nicht zwischen Gross- und Kleinschreibung unterschieden wird und NamesLink, nameslink, NAMESLINK, nAmESLiNk, … alles der gleiche Name sind.
Tabellennamen, also eigentlich die Namen von Relationen, sind sehr ähnlich zu Klassen. Was ist ein `NamesLink`? Das ist doch eigentlich ein Film‽ Wie speicherst Du zwei Künstler die im gleichen Film mitspielen und diesen Film? Da hast Du doch dann wieder Redundanz. Ein Künstler kann in mehreren Filmen mitspielen, in einem Film können aber auch mehrere Künstler mitspielen. Das ist eine n:m-Beziehung, da braucht man drei Tabellen. `artist`, `movie` und eine Tabelle die beides zuordnet, zum Beispiel `artist_to_movie`.
Tabellennamen, also eigentlich die Namen von Relationen, sind sehr ähnlich zu Klassen. Was ist ein `NamesLink`? Das ist doch eigentlich ein Film‽ Wie speicherst Du zwei Künstler die im gleichen Film mitspielen und diesen Film? Da hast Du doch dann wieder Redundanz. Ein Künstler kann in mehreren Filmen mitspielen, in einem Film können aber auch mehrere Künstler mitspielen. Das ist eine n:m-Beziehung, da braucht man drei Tabellen. `artist`, `movie` und eine Tabelle die beides zuordnet, zum Beispiel `artist_to_movie`.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
"fummeln" heisst bei mir Suche im Netz und gucken was passt bzw selber überlegen.
je weiter man vorran kommt , um so mehr Neues kommt auf einen zu.
Aber ich hab schon die Lösung gefunden.
ich hab nun eine DB_ArtistLink die als "Zwischenbasis" fungiert.
ich hab nun 3 Tabellen
Artist, Link, Studio
in der Link sind dann die ID's von Artist und Studio.
mit INNER JOIN https://www.w3schools.com/sql/sql_join_inner.asp
gehts dann bzw als "SELECT ArtistID,Link FROM DB_NamesLink WHERE ArtistID IN (SELECT ArtistID FROM DB_Artist WHERE Name = '{artistname}');""
ich hab vorher die ID's von Link und Studio noch in Artist drin gehabt. Das war ein Denkfehler, weil überflüssig. Aber so lernt man wie es geht.
je weiter man vorran kommt , um so mehr Neues kommt auf einen zu.
Aber ich hab schon die Lösung gefunden.
ich hab nun eine DB_ArtistLink die als "Zwischenbasis" fungiert.
ich hab nun 3 Tabellen
Artist, Link, Studio
in der Link sind dann die ID's von Artist und Studio.
mit INNER JOIN https://www.w3schools.com/sql/sql_join_inner.asp
gehts dann bzw als "SELECT ArtistID,Link FROM DB_NamesLink WHERE ArtistID IN (SELECT ArtistID FROM DB_Artist WHERE Name = '{artistname}');""
ich hab vorher die ID's von Link und Studio noch in Artist drin gehabt. Das war ein Denkfehler, weil überflüssig. Aber so lernt man wie es geht.
- __blackjack__
- User
- Beiträge: 13117
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Das ``WHERE Name = '{artistname}');""`` sieht gefährlich danach aus als wenn da ein Wert in SQL als Zeichenkette rein formatiert wird. Das macht man nicht. Einmal aus Sicherheitsgründen. Und auch weil es fehleranfällig ist, wenn man sich dann beispielsweise mal Daten zu Peter O'Toole anschauen möchte.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman