Toon posts:

[ACCESS/SQL] Query probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben voor school een database aan het ontwerpen. Nu wil ik een bepaalde tabel een willekeurig ID toevoegen die nog niet in gebruik is.

in de tabel kennisnet heb ik bijvoorbeeld dit staan:

kennisnet_id actief
1234AB 1
4321BA 1
2222BA 0
3333DA 0

nu wil ik hier een dus een kennisnet_id uitplukken die nog niet actief is en deze invoegen in een tweede tabel:

llnr kennisnet_id
1 1234AB
2 4321BA

Ik heb daar deze query voor geschreven:

INSERT INTO ll_links VALUES (10, (SELECT TOP 1 kennisnet_id FROM kennisnet WHERE actief = Nee));

echter returned deze query de errorcode -3025

Kan iemand mij helpen met dit probleem?

  • DRAFTER86
  • Registratie: April 2002
  • Laatst online: 05:36
voglens mij gaat insert zo:
code:
1
Insert Into Tabel (Kolom1,Kolom2) Values ('Waarde1','Waarde2');


Dus eerst de kolom waar de data in moet aangeven

Verwijderd

Topicstarter
DRAFTER86 schreef op 07 January 2003 @ 16:07:
voglens mij gaat insert zo:
code:
1
Insert Into Tabel (Kolom1,Kolom2) Values ('Waarde1','Waarde2');


Dus eerst de kolom waar de data in moet aangeven
Dat hoeft niet perse.. Alleen als je bijvoorbeeld niet alle kolommen gebruikt bij het inserten.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 21:12

gorgi_19

Kruimeltjes zijn weer op :9

Actief = Nee?
Moet dit niet zijn:
actief = 0
Of
actief = false
?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op 07 januari 2003 @ 16:19:
Actief = Nee?
Moet dit niet zijn:
actief = 0
Of
actief = false
?
Eheh, ja.. Ik ben tijdens het schrijven nog weer even bezig geweest met die tabel. Overigens is dat niet de oorzaak van het probleem.

Ik krijg nog steeds: "Er is een gereserveerde fout (-3025) opgetreden. Er is geen bericht voor deze fout."

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 26-08 17:37

Dido

heforshe

Probeer anders dit eens:
code:
1
2
3
INSERT INTO ll_links(llnr, kennisnet_id)
    SELECT TOP 1 10, kennisnet_id 
      FROM kennisnet WHERE actief = Nee));


Kweetnie zeker of een select binnen je VALUES clause goed gaat... ik heb altijd geleerd dat 't 't een of het ander moet zijn...

Wat betekent mijn avatar?


  • pling
  • Registratie: Maart 2001
  • Laatst online: 25-08 17:48

pling

Lekker Kepjoeteren

Dat
TOP 1
wil je volgens mij ook niet. Dat zou betekenen dat je alleen het eerste record dat je vindt wilt inserten.

Verwijderd

Topicstarter
pling schreef op 07 januari 2003 @ 16:38:
Dat
[...]
wil je volgens mij ook niet. Dat zou betekenen dat je alleen het eerste record dat je vindt wilt inserten.
ja, dat is inderdaad de bedoeling

@Dido: dan krijg ik een syntax error

[ Voor 17% gewijzigd door Verwijderd op 07-01-2003 16:41 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 26-08 12:42

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op 07 januari 2003 @ 16:13:
[...]


Dat hoeft niet perse.. Alleen als je bijvoorbeeld niet alle kolommen gebruikt bij het inserten.


Hoeft niet perse? Hoeft wel perse. Dat iets niet voor een foutmelding zorgt betekend dat nog niet dat het goed is of mag. Het komt de duidelijkheid van je source erg ten goede, en voorkomt vervelende fouten. Stel je voor dat je achteraf nog een kolom toevoegd aan je DB? Waneer je gewoon overal kolommen opgeeft is er helemaal niks aan de hand.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • pling
  • Registratie: Maart 2001
  • Laatst online: 25-08 17:48

pling

Lekker Kepjoeteren

Alleen "1234AB" dus van de twee ? ok, kan natuurlijk...

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 26-08 12:42

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op 07 January 2003 @ 16:39:
[...]


ja, dat is inderdaad de bedoeling

@Dido: dan krijg ik een syntax error


Het gaat niet om het weglaten van de haakjes! Kijk ff goed naar de verschillen tussen jou query en die van Dido. Daar zit namelijk wel de oplossing :)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 26-08 17:37

Dido

heforshe

Verwijderd schreef op 07 January 2003 @ 16:39:
@Dido: dan krijg ik een syntax error

Ja natuurlijk :)
En als je die laatste twee haakjes weghaalt?

Wat betekent mijn avatar?


Verwijderd

Topicstarter
pling schreef op 07 January 2003 @ 16:40:
Alleen "1234AB" dus van de twee ? ok, kan natuurlijk...
Ja, elke leerling moet een uniek kennisnet ID krijgen. De beschikbare ID's staan in de tabel kennisnet. In principe maakt het verder niet uit welke leerling wel ID krijgt.

@Janoz: ok

  • pling
  • Registratie: Maart 2001
  • Laatst online: 25-08 17:48

pling

Lekker Kepjoeteren

3025: Query must have an input

  • pling
  • Registratie: Maart 2001
  • Laatst online: 25-08 17:48

pling

Lekker Kepjoeteren

Ja, elke leerling moet een uniek kennisnet ID krijgen.
en je hebt per leerling een tabel. :/ hmmmm... wellicht bedoel je DISTINCT

[ Voor 11% gewijzigd door pling op 07-01-2003 16:47 ]


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 26-08 17:37

Dido

heforshe

pling schreef op 07 January 2003 @ 16:44:
3025: Query must have an input

Aha... dan is dus 1 probleem dat nergens je veld actief de waarde Nee heeft. Dat klinkt op zich ook al logisch...

Zou ik toch ook nog eens checken...
pling schreef op 07 January 2003 @ 16:46:
en je hebt per leerling een tabel. :/ hmmmm...
Waar leidt je dat uit af :?

[ Voor 24% gewijzigd door Dido op 07-01-2003 16:47 ]

Wat betekent mijn avatar?


Verwijderd

Topicstarter
pling schreef op 07 January 2003 @ 16:46:
[...]
en je hebt per leerling een tabel. :/ hmmmm...
nee, drie tabellen.

kennisnet (Alle mogelijke ID's)
leerlingen (Alle leerlingen + gegevens)
ll_links (hierin staat welke leerling welk ID heeft)

Als ik die subquery uitvoer krijg ik trouwens wel een waarde:

kennisnet_id
2222BA

  • pling
  • Registratie: Maart 2001
  • Laatst online: 25-08 17:48

pling

Lekker Kepjoeteren

wellicht bedoel je DISTINCT

Verwijderd

Topicstarter
Dido schreef op 07 January 2003 @ 16:42:

[...]

Ja natuurlijk :)
En als je die laatste twee haakjes weghaalt?
8)7

Ja! Dan werkt 'ie!! Hartstikke bedankt allemaal!

  • pling
  • Registratie: Maart 2001
  • Laatst online: 25-08 17:48

pling

Lekker Kepjoeteren

Ah, ok. Ik begreep het niet helemaal met die TOP 1...

  • VisionMaster
  • Registratie: Juni 2001
  • Laatst online: 18-07 20:32

VisionMaster

Security!

Janoz schreef op 07 January 2003 @ 16:40:

[...]


Hoeft niet perse? Hoeft wel perse. Dat iets niet voor een foutmelding zorgt betekend dat nog niet dat het goed is of mag. Het komt de duidelijkheid van je source erg ten goede, en voorkomt vervelende fouten. Stel je voor dat je achteraf nog een kolom toevoegd aan je DB? Waneer je gewoon overal kolommen opgeeft is er helemaal niks aan de hand.
Ik denk dat Black Raven bedoelde dat het niet nodig is om een correcte insert te maken. Tis wel sterk aan te raden de kolomnamen te specificeren, omdat je anders op de gok je kolommen specificeerd. Mocht er een kolom bij komen (een 2 naar 3 kolommen situatie) dan zul je met een 'ruwe' insert van twee kolommen alleen de eerste twee vullen (mits de database dit volgens de constraints toelaat).

Access is nog open-minded over zulke dingen.

I've visited the Mothership @ Cupertino


Verwijderd

Topicstarter
pling schreef op 07 January 2003 @ 16:54:
Ah, ok. Ik begreep het niet helemaal met die TOP 1...
TOP 1 gebruik ik om er voor te zorgen dat ik maar 1 record terug krijg. Anders werkt een subquery namelijk niet.
Pagina: 1