Toon posts:

[SQL-ORACLE9i2] Dubele recods in een nieuwe tabel updaten.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik moet alle colommen uit een tabel waar de image colom van dubbel is naar een andere tabel laden.
Om alle dubbelen eruit te filteren gaat zo :

SELECT image
FROM catalognc
GROUP BY image
HAVING COUNT(*) > 1;

Maar hoe ik deze in een update statement pak weet ik niet precies.
tot nu toe heb ik dit in elkaar geprutst maar werkt niet echt.

UPDATE catalognc_dubbel
SET * = (SELECT * FROM catalognc
WHERE catalognc.image = ( SELECT image FROM catalognc GROUP BY image HAVING COUNT(*) > 1;)

Kan iemand mij verder helpen.

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Waarom zit je een update te proberen?
Bedoel je niet insert?

Who is John Galt?


Verwijderd

Topicstarter
Ik weet dat het op het einde )); moet zijn.
was een copy past foutje

Verwijderd

Topicstarter
Precies, ik zit al veels te lang achter mijn computer.
Probeer ik het eens met een insert.

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Vraag je ook even af of je de dubbelen ook dubbel in je andere tabel gaat zetten.
Zo niet welke van de records wil je dan overzetten?

Who is John Galt?


Verwijderd

Topicstarter
De dubbelen moeten ui de catalognc naar catalognc_dubbel.
Het maakt niet uit of in catalognc_dubbel ook dubbelen zitten.


INSERT INTO catalognc_dubbel
VALUES (SELECT * FROM catalognc WHERE catalognc.image = ( SELECT image FROM catalognc GROUP BY image HAVING COUNT(*) >1));

Deze query werkt niet,geeft een foutmelding in regel 2:
missing expression

[ Voor 23% gewijzigd door Verwijderd op 07-10-2004 14:00 ]


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Verwijderd schreef op 07 oktober 2004 @ 13:59:
De dubbelen moeten ui de catalognc naar catalognc_dubbel.
Het maakt niet uit of in catalognc_dubbel ook dubbelen zitten.

INSERT INTO catalognc_dubbel
VALUES (SELECT * FROM catalognc WHERE catalognc.image = ( SELECT image FROM catalognc GROUP BY image HAVING COUNT(*) >1));

Deze query werkt niet,geeft een foutmelding in regel 2:
missing expression
Je mag je SQL syntax kennis wel eens opvijzelen.

code:
1
2
INSERT INTO catalognc_dubbel
(SELECT * FROM catalognc WHERE catalognc.image IN ( SELECT image FROM catalognc GROUP BY  image HAVING COUNT(*) >1));

Who is John Galt?


Verwijderd

Topicstarter
Dit heb ik ook al geprobeerd.
Maar dit werkt ook niet
ik krijg de foutmelding

FOUT in regel 1:
not enough values.

de tabel catalognc_dubbel is een copy van catalognc
dus dit snap ik niet.

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

describe ze dan eens en zet het resultaat hier

Who is John Galt?


Verwijderd

Topicstarter
SQL> desc catalognc
Naam Null? Type
----------------------------------------- -------- --------------
IMAGE VARCHAR2(50)
PRODUCER_ID NUMBER
SUPPLIER_ID NUMBER
MAPNC_ID NOT NULL NUMBER
PROJECTION_ID NUMBER
COORDINATESYSTEM_ID NUMBER
DATUM_ID NUMBER
DATEPRODUCED VARCHAR2(30)
SCALE VARCHAR2(25)
STORAGE VARCHAR2(128)
FILENAME VARCHAR2(25)
EDITION VARCHAR2(10)
FILEFORMAT VARCHAR2(25)
INFORMATIONTYPE VARCHAR2(25)
GEOREFERENCED VARCHAR2(10)
MAPCHECK VARCHAR2(10)
RESOLUTION VARCHAR2(25)
COMPRESSION VARCHAR2(25)
MAPSIZE VARCHAR2(25)
SCAN VARCHAR2(10)
FILESIZE VARCHAR2(25)
THIRDPARTY VARCHAR2(10)
COSTS VARCHAR2(10)
DGKL_INSTOCK VARCHAR2(50)
DIGITAL VARCHAR2(50)
COPYRIGHT VARCHAR2(25)
CLASIFICATION VARCHAR2(25)
REMARKS VARCHAR2(50)
CD VARCHAR2(25)
SERIES VARCHAR2(25)
LOCKERNR NVARCHAR2(10)
DRAWERNR NVARCHAR2(10)
ROWNR NVARCHAR2(10)
POSITIONNR NVARCHAR2(10)
RAGI_COUNTRY_NR NVARCHAR2(10)

SQL> desc catalognc_dubbel
Naam Null? Type
----------------------------------------- -------- --------------
IMAGE VARCHAR2(50)
PRODUCER_ID NUMBER
SUPPLIER_ID NUMBER
MAPNC_ID NOT NULL NUMBER
PROJECTION_ID NUMBER
COORDINATESYSTEM_ID NUMBER
DATUM_ID NUMBER
DATEPRODUCED VARCHAR2(30)
SCALE VARCHAR2(25)
STORAGE VARCHAR2(128)
FILENAME VARCHAR2(25)
EDITION VARCHAR2(10)
FILEFORMAT VARCHAR2(25)
INFORMATIONTYPE VARCHAR2(25)
GEOREFERENCED VARCHAR2(10)
MAPCHECK VARCHAR2(10)
RESOLUTION VARCHAR2(25)
COMPRESSION VARCHAR2(25)
MAPSIZE VARCHAR2(25)
SCAN VARCHAR2(10)
FILESIZE VARCHAR2(25)
THIRDPARTY VARCHAR2(10)
COSTS VARCHAR2(10)
DGKL_INSTOCK VARCHAR2(50)
DIGITAL VARCHAR2(50)
COPYRIGHT VARCHAR2(25)
CLASIFICATION VARCHAR2(25)
REMARKS VARCHAR2(50)
CD VARCHAR2(25)
SERIES VARCHAR2(25)
LOCKERNR NVARCHAR2(10)
DRAWERNR NVARCHAR2(10)
ROWNR NVARCHAR2(10)
POSITIONNR NVARCHAR2(10)
RAGI_COUNTRY_NR NVARCHAR2(10)

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Ik heb je tabellen even aangermaakt en het statement geprobeerd, werkt perfect.
Waarschijnlijk heb je nog ergens een typefoutje zitten.

Who is John Galt?


Verwijderd

Topicstarter
Hoi,

Ik wil een select query met een group by query maken en deze group by
doe ik op een veld maar de select moet alles laten zien.

Een normale GROUP BY query :

select image from catalognc group by image;

Maar nu geeft hij alleen de colom image terug maar ik wil dat hij * terug geeft.
Kan iemand mij hier helpen.

  • Onno
  • Registratie: Juni 1999
  • Niet online
Verwijderd schreef op 08 oktober 2004 @ 08:58:
Maar nu geeft hij alleen de kolom image terug maar ik wil dat hij * terug geeft.
:?

Wat moet ie volgens jou dan teruggeven als je 14 records hebt met dezelfde waarde in image? Welke van de 14 andere velden wil je dan hebben?

Verwijderd

Je moet naast de * wel een groepsfunctie selecteren, bijvoorbeeld SUM of COUNT. Anders heeft de GROUP BY geen zin.

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Dat kan natuurlijk niet, als je een group by op alle velden doet, krijg je gewoon alle records terug.

Stel je het volgende eens voor

code:
1
2
3
4
Naam      Leeftijd     Woonplaats
Jan          20             A'dam
Klaas       22             A'dam
Johan       26            Rotterdam


En je wilt een GROUP BY op woonplaats doen. Je zult dan moeten aangeven welke voornaam en leeftijd je wilt. Bijvoorbeeld

SELECT Woonplaats, MAX(Naam), MAX(Leeftijd) FROM Tabel
GROUP BY Woonplaats

Begrijp je wat ik bedoel?

edit:

laat .....

[ Voor 4% gewijzigd door P_de_B op 08-10-2004 09:03 ]

Oops! Google Chrome could not find www.rijks%20museum.nl


Verwijderd

@TS: Gezien je previous topics, wordt het niet eens tijd voor een SQL 101?

[ Voor 4% gewijzigd door Verwijderd op 08-10-2004 09:05 ]


Verwijderd

Topicstarter
Ik moet eigelijk het veld mapnc_id hebben.
Hier een voorbeeld van de tabel:

image mapnc_id

image1 ...... 1
image2 ...... 2
image1 ...... 3
image3 ...... 4

Nu moet hij dit terug geven na de query :

image1 ...... 1
image2 ...... 2
image3 ...... 4

  • Onno
  • Registratie: Juni 1999
  • Niet online
Verwijderd schreef op 08 oktober 2004 @ 09:09:
image mapnc_id

image1 ...... 1
image1 ...... 3

Nu moet hij dit terug geven na de query :

image1 ...... 1
Waarom image1, 1 en niet bijvoorbeeld image1, 3?

Verwijderd

Topicstarter
het gaat mij er niet om welke hij terug geeft als hij er maar 1 terug geeft.

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Lezen: P&W FAQ - SQL, staat alles in over group by

[ Voor 31% gewijzigd door P_de_B op 08-10-2004 09:22 ]

Oops! Google Chrome could not find www.rijks%20museum.nl


Verwijderd

Topicstarter
Bedankt, hier is mijn query nog die gebruikt heb.

select image,min(mapnc_id) from catalognc group by image;

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Ga voortaan gewoon lekker verder in je vorige topic als het over hetzelfde gaat.

Merged :)

Professionele website nodig?

Pagina: 1