Toon posts:

[Access] primary key zetten bij een Select into statement

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb het volgende probleem:

SELECT brontabel1.Autonumbveld1, brontabel2.autonumbveld2 INTO tbltabel IN 'C:\doeldb.mdb' FROM brontabel1 INNER JOIN etc...

De uitvoering van bovenstaande query gaat fout omdat hij dubbele autonumb fields bevat (ik heb beide velden echt nodig). Nu zegt de help van acess dat het mogelijk is een primaire sleutel te maken voor de nieuwe tabel waardoor er geen andere eigenschappen meegenomen worden (wat ik juist wil):

uit de help:

U kunt een primaire sleutel definiëren voor de nieuwe tabel. Als u de tabel maakt, krijgen de velden in de nieuwe tabel hetzelfde gegevenstype en dezelfde veldlengte als de velden in de onderliggende tabellen in de query, maar worden er verder geen veld- en tabeleigenschappen overgenomen.

helaas vertellen ze er niet bij HOE dat moet. Heeft iemand een vb hiervan?

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

VisionMaster

Security!

SELECT brontabel1.Autonumbveld1, brontabel2.autonumbveld2 INTO tbltabel IN 'C:\doeldb.mdb' FROM brontabel1 INNER JOIN etc...

Select into ... ? is dat een Access feature, dit is geen standaard SQL
Kan je opzoeken wat een select into format is?
ps: 2 autonummer velden moet lukken in je select hoor, maar een select into klinkt meer als een insert into .... :X

I've visited the Mothership @ Cupertino


Verwijderd

Topicstarter
Hmm, INSERT INTO is toch voor het invoeren van 1 record? Ik wil juist meerdere records in één keer inserten.

Format is (volgens help) alsvolgt, maar daar kan ik dus niets mee.

SELECT veld1[, veld2[, ...]] INTO nieuwetabel [IN externedatabase]
FROM bron

Is niet echt een Access feature voglens mij (MS Jet SQL dacht ik). Maar kan ik op de één of andere manier een PRIMARY KEY zetten zodat hij de eigenschappen (autonumb bv.) NIET meeneemt bij het uitvoeren van de query. Dat zeggen ze n.l. in de documentatie.

Ik heb trouwens nu wel een foutmelding op het scherm weten te toveren:

3090: Resultant table not allowed to have more than one AutoNumber field

Maar dat had ik zelf al bedacht....

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

VisionMaster

Security!

probeer eens:
code:
1
2
insert (into) table1 (column1, column2, ...)
select * from table2

Dat is de standaard sql manier om gegevens te inserten. En als je hard in de select statement een cijfer op een autonummer veld neerzet, dan moet je effe kijken, maar volgens mij pakt hij dan gewoon je waard op en zet de Jet engine het voor jou in de mdb op die kolom

I've visited the Mothership @ Cupertino


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

VisionMaster

Security!

hmmm
select into lijkt op een selectie van gegevens naar een virtuele tabel die je in complexere queries kan aanroepen. Een soort van virtuele Oracle tabel die je run-time voor die query bouwd (ik kan het fout hebben)

Of jewil gewoon aangeven dat het van een externe database afkomt en dat het die tabel heet ... al vind ik dat vaag, omdat je FROM dan nutteloos is geworden.... :?

I've visited the Mothership @ Cupertino


Verwijderd

Topicstarter
SELECT INTO is handig om een tabel van de ene naar de andere database te kopieren ( of een selectie uit tabellen). Ik wil trouwens geen virtuele tabel maken , maar een 'echte' tabel in een tijdelijke backup-database.

Maar wat mij enigszins frustreert is dat de help de oplossing eigenlijk aangeeft, maar niet aangeven how the f* ik dit moet toepassen :?
U kunt een primaire sleutel definiëren voor de nieuwe tabel. Als u de tabel maakt, krijgen de velden in de nieuwe tabel hetzelfde gegevenstype en dezelfde veldlengte als de velden in de onderliggende tabellen in de query, maar worden er verder geen veld- en tabeleigenschappen overgenomen.
Pagina: 1