Toon posts:

[SQL-ACCESS]insert query met waarde opvragen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een insert-query maken.
Het gaat om het invoeren van een auto, maar de p_id weten we niet (dat is namelijk een automatisch gegenereerd nummer, en de persoon waar de auto bij moet horen wordt in een query daarvoor ingevoegd.

In de tabel auto is de koppeling tussen p_id en kenteken uniek (primaire sleutel). Ik moet bij het toevoegen van de auto dus het bijbehorende p_id weten.

Nu had ik het volgende geprobeerd:
SQL:
1
2
3
4
5
INSERT INTO AUTO
VALUES (p_id in ( SELECT p_id FROM PARKEERDER 
   WHERE voornaam = "Marisa" AND achternaam = "Hanstede" 
   AND Niveau = "A" AND telnummer ="06 29292929" 
   AND email = "blaat@woei.nl" ) , "00-KN-AL", false);


Dit slaat hij zonder enig foutmelding op, maar als ik de query daarna wil uitvoeren krijg ik:
Reserved error (-3025); there is no message for this error.

Verwijderd

Topicstarter
Wellicht wat meer uitleg

We willen straks vanuit java gegevens invoeren in de database. Naam, telefoonnummer, kenteken, code... Deze drie dingen staan in drie tabellen en zijn onderling gerelateerd.
Ik heb begrepen dat het niet mogelijk is om via een SQL-Query meerdere tabellen tegelijk weg te schrijven dus dat moet een voor een.

Ik ben nu eerst even de SQL-Queries in Access aan het maken.
De eerste code schrijft de gegevens in de tabel PARKEERDER weg
SQL:
1
2
INSERT INTO PARKEERDER ( voornaam, achternaam, niveau, telnummer, email )
VALUES ("Vladimir", "Ivanovich", "A", "06 29292929", "blaat@woei.nl");

Deze krijgt een automatisch gegenereerd p_id.

De tabel AUTO staat gekoppeld aan dit p_id.
Nu moet ik dus in de TABEL AUTO het p_id, de kenteken en de aanwezigheid invullen.
Het kenteken moet ik meegeven, stel "00-KN-AL" en de aanwezigheid is false.
Tot nu toe geen probleem, alleen het p_id. Die weet ik niet, dan moet ik opvragen wat de p_id is die in PARKEERDER is toegewezen.

Nu heb ik dat op de bovenstaande manier geprobeerd, maar zonder succes.
Ook heb ik nog met SELECT INTO en met INSERT INTO .. SELECT .. FROM .. WHERE, maar het lukt me niet om alle drie de gegevens toe te voegen aan de bestaande tabel AUTO.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Als je een record wilt inserten dat als primary key een autonumber veld heeft, moet je dat primkey veld niet oppnemen in je query:
code:
1
2
insert into auto
( autonaam) values ('Honda')

Om dan de primary key van dat record op te halen kan je
code:
1
select @@identity from auto

doen.

@@identity geeft nl. de key terug van het laatst geinserte record van deze sessie.

[ Voor 13% gewijzigd door whoami op 09-04-2003 14:28 ]

https://fgheysels.github.io/


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 16:05

Dido

heforshe

Wat gebeurt er als je dit probeert?
SQL:
1
2
3
4
5
INSERT INTO AUTO
VALUES (SELECT p_id FROM PARKEERDER 
   WHERE voornaam = "Marisa" AND achternaam = "Hanstede" 
   AND Niveau = "A" AND telnummer ="06 29292929" 
   AND email = "blaat@woei.nl" , "00-KN-AL", false);

Het stukje dat ik heb weggehaald snapte ik namelijk niet....

Wat betekent mijn avatar?


Verwijderd

Topicstarter
O, ik zie dat ik de naam halverwege heb veranderd van Marisa naar Vladimir :).
Maakt ook niet uit.

Als ik jouw code probeer Dido, krijg ik een Syntax-error op SELECT. Hij verwacht daar ook een waarde, een value.
Wat ik had gemaakt was een sub-query.
SELECT p_id in (zoals de p_id is in de query) (en dan hier je subquery die de p_id op moet leveren.

Op SELECT hangt hij alleen, haal ik SELECT eruit slaat hij wel op, maar kan hij niet uitgevoerd worden.

Als ik SELECT weghaal uit de query van jou, een joinquery geloof ik, dan hangt ie weer op FROM.

[ Voor 3% gewijzigd door Verwijderd op 09-04-2003 14:38 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Als je een dergelijke select doet (zoals Dido's voorbeeld), dan mag je geen haakjes en geen VALUES keyword gebruiken.
De query wordt dan:
code:
1
2
insert into auto
select blaat from tabel Where ...

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ook met die query heb ik het geprobeerd.
SQL:
1
2
3
4
INSERT INTO AUTO
SELECT p_id
FROM PARKEERDER
WHERE voornaam="Vladimir";

Deze code werkt niet.
In de tabel AUTO is de primaire sleutel de combinatie van het p_id en het kenteken.
Het kenteken staat echter nog nergens in de tabel, die wil ik juist invoeren met de query.
Maar het p_id moet ik uit de tabel PARKEERDER halen.

Met de bovenstaande query kan ik weer geen VALUE "00-KN-AL" mee geven.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Je kan het als volgt doen:

code:
1
2
3
4
insert into auto (veld1, veld2, veld3)
select p_id, "00-KN-AL", false
FROM parkeerder
WHERE voornaam = "vladimir

https://fgheysels.github.io/


Verwijderd

zoe doe ik het altijd

Insert into [Tabel1] ([Veld1],[Veld2]) Select 'waarde1' as [Veld1], [Veld2] From [AndereTabel] Where [Veld1] = 'Iets'
was te laat :)
wat boven mij gespost is Goed zo moet je het doen

[ Voor 37% gewijzigd door Verwijderd op 09-04-2003 14:58 ]


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 16:05

Dido

heforshe

Verwijderd schreef op 09 april 2003 @ 14:37:Als ik jouw code probeer Dido, krijg ik een Syntax-error op SELECT. Hij verwacht daar ook een waarde, een value.
Wat ik had gemaakt was een sub-query.
Leuk bedacht, maar geen SQL. Het keyword IN gebruik je als er een lijst met waardes gebruikt wordt (komt a voor in lijst b), jij wilt maar 1 waarde, geen lijst.
Juist mijn select geeft maar 1 waarde terug, maar dan mot het idd zonder values, haakjes en meer van die zooi.

thanks whoami 8)7

[ Voor 4% gewijzigd door Dido op 09-04-2003 14:59 ]

Wat betekent mijn avatar?


Verwijderd

Topicstarter
whoami schreef op 09 April 2003 @ 14:51:
Je kan het als volgt doen:

code:
1
2
3
4
insert into auto (veld1, veld2, veld3)
select p_id, "00-KN-AL", false
FROM parkeerder
WHERE voornaam = "vladimir
Ik hou van je ! :9

SQL:
1
2
3
4
INSERT INTO auto ( p_id, kenteken, aanwezig )
SELECT [p_id], "00-KN-AL", false
FROM parkeerder
WHERE voornaam="vladimir";

Deze deed het hem. Ik had al zoiets geprobeerd, maar omdat de bovenste drie genoemde velden achter auto gelijk ook alle velden van de tabel zijn, had ik ze niet nog appart gedefinieerd. En dan werkt het dus niet.

Deze werkte dus niet ondanks dat p_id, kenteken en aanwezig alle velden van de tabel auto was:
SQL:
1
2
3
4
INSERT INTO auto 
SELECT [p_id], "00-KN-AL", false
FROM parkeerder
WHERE voornaam="vladimir";


Bedankt, weer een probleem opgelost :). Bedankt naar iedereen die heeft meegedacht natuurlijk :)

[ Voor 7% gewijzigd door Verwijderd op 09-04-2003 14:59 ]

Pagina: 1