Datensatz einfügen über 2 Tabellen - MySql

Floffi

Grünschnabel
Hallo erstmal ich bin neu hier, werd aber sich in der nächsten zeit öfter paar doofe fragen stellen.

Ich bin eigentlich kein Informatiker sondern Geograph, ich arbeit zur zeit mit einer sehr umfangreichen Datenbank die mittels eines WMS ans netz gehen soll und vor dort aus dynamisch upgedatet werden soll bzw. bearbeitet.

mein Problem bezieht sich auf zwei Tabellen in dieser datenbank


tSites, tCoordinates

tSites:
sitIdSite (INT, not NULL) Primary Key - Feld wird automatisch generiert beim einfügen von Zeilen
sitSiteName (varChar(100))
sitCountry (varChar(100))
sitFederalState (varChar(100))

(sind noch paar mehr, aber das sind halt meine wichtigen)

tCoordinates:
cooIdSite (int, not Null) Foreign Key
cooIdVertex (int, not Null)
cooXCoordGeo (int, Not Null)
cooYCoordGeo (int, Not Null)

Die Tabelle Coordinates speichert mir die Geographischen Koordinaten für die Plätze (sites).

So jetzt will ich eine neue Site erstellen:

INSERT INTO SITE (sitSiteName, sitCountry, sitFederalState)
VALUES ('Werte halt')

gut und genau hier tritt mein problem auf:
jetzt muss ich ja meiner site noch koordinaten verpassen, damit die weiss wo die auf der welt liegt - sprich die tCoordinates bearbeiten

aber wie krieg ich den Fortlaufenden automatischen sitIdSite in mein zweites SQL INSERT statement rein -

INSERT INTO tCoordinates (cooIdSite, cooIdVertex, cooXCoordGeo, cooYCoordGeo)
VALUES


ich hoffe ich hab mein Problem so gut beschrieben und meine umgebung in der ich arbeit
ich würd mich echt auf hilfe freuen! würd ich mal weiter kommen!

so ich bedank mich schon mal im voraus und wünsch euch schöne weihnachten
 
Also wie ichs jetzt verstanden habe ist "cooIdSite" der Fremdschlüssel aus SITE .

Wieso fügst du nicht einfach wenns einen INSERT in die SITE Tabelle gibt die gleiche id in die tCoordinates ein.

Also z.b.:
INSERT INTO SITE (sitSiteName, sitCountry, sitFederalState)
VALUES ('Werte halt')

SELECT sitIdSite FROM SITE ORDER BY sitIdSite desc limit 0,1
So bekommst du die zuletzt eingetragene "sitIdSite" aus der Tabelle SITE und musst ihn dann nur noch beim INSERT von "tCoordinates" bei "cooIdSite" als Wert eintragen.

INSERT INTO tCoordinates (cooIdSite, cooIdVertex, cooXCoordGeo, cooYCoordGeo)
VALUES(Wert vom SELECT,.........)

Ich hoff das hilft dir weiter.
Grüße Julian
 
ja und nein - das wäre auf jeden fall die lösung! (denke ich mal) simpel und einfach und spart berechnungszeiten!

mein problem ist jetzt wo ich die select anweisung geschrieben abe dass er mir eine syntax fehlermedung bringt ... bla bla bla ... Falsche Syntax in der Nähe von 'Limit'.

kann daran liegen, dass der sqlServer aus dem jahre 2000 stammt (ich mein die software)

aber danke du hast mir auf jeden fall schon einen richtig schönen denkanstoss gegeben und ich trudl jetzt mal in die richtige richtung!
 
INSERT INTO tSites (sitSiteName, sitCountry, sitFederalState)
VALUES ('test1', 'test2', 'test3')

SELECT sitIdSite FROM tsite ORDER BY sitIdSite desc limit 0,1


das ist mein Code -
Fehlermeldung:

"Server: Nachr.-Nr. 170, Schweregrad 15, Status 1, Zeile 4
Zeile 4: Falsche Syntax in der Nähe von 'limit'."
 
Ich glaub du hast die Tabelle falsch geschrieben:

"SELECT sitIdSite FROM tsite ORDER BY sitIdSite desc limit 0,1"


So ists richtig:
SELECT sitIdSite FROM tSites ORDER BY sitIdSite desc limit 0,1

denk ich mal.
 
urks wie peinlich da werkl ich schon seit wochen mit den tabellen rum - aber
leider gottes trotz richtig gestellter SQL anweisung:

gibts die Selbe fehlermeldung.

so 18.00 ich bin nur Praktikant - schlecht bezahlt und praktikant
ich fahr heim! - frustiert über meine unfähigkeit

dank dir auf alle fälle!
 
wenn ich das system so aufzieh, dann nimmt er mir ja immer den letzten wert von meiner ID

wenn ich jedeoch zwei user hab die mir justament im selben moment einen insert machen wollen, hauts mir ja das ganze system zusammen

sprich es ist nicht zu 100 % gewährleistet, dass ich eine eindeutigkeit hab!
 
Zurück