Avatar billede jnys Nybegynder
18. august 2008 - 21:51 Der er 6 kommentarer og
1 løsning

Vise id sammen med SELECT DISTINCT forspørgelse !

Hej alle SQL nørder....

PGA. ens rækker ( DATA REKUDANT ) i den samme tabel bruger jeg flg.

SELECT DISTINCT navn, pris
FROM vare;

Giver det korrekte svar, men jeg mangler at få de sidste data med,
DVS. vare.id ( KEY ).

Derefter kan jeg kopier det i en ny tabel.

men mon ikke man bare kan bruge delete når det vare.id er klaret.

;-)

Er der nogle der har løsningen når det kun er i en tabel.

Bedst regards / venligst
Nys
Avatar billede kjulius Novice
18. august 2008 - 21:58 #1
Så bliver du vist nødt til at vælge, hvilken af rækkerne du ønsker.

Du kan bruge enten MIN() eller MAX() funktionen på Id feltet, og så gruppere på resten af felterne:

SELECT MIN(id) AS id, navn, pris
FROM vare
GROUP BY navn, pris;
Avatar billede kjulius Novice
18. august 2008 - 22:02 #2
Du kan også få din nye tabel til at generere en ny id (hvis id autogenereres, hvilket det normalt gør):

INSERT INTO nyTabel (navn, pris)
SELECT DISTINCT navn, pris
FROM vare
Avatar billede jnys Nybegynder
19. august 2008 - 08:57 #3
Takker for svar
Problemet er at der er ( auto nr. ) sammen med en unik vare nr samt enhed på vare osv. ialt. 7 felter pr. vare.

kan se at det ikke kan lade sig gøre :-(
Da der er mange data
Jeg bliver nød til at flytte samtlige data over i en ny tabel.
ca 450.000 vare nr.
Avatar billede kjulius Novice
19. august 2008 - 22:43 #4
Jamen, det burde da heller ikke være noget problem.

Definer en tabel med samme udseende som den oprindelige tabel.

Kør en
INSERT INTO dinNyeTabel (felt1, felt2, felt3...)
SELECT DISTINCT felt1, felt2, felt3 ... felt7
FROM dinGamleTabel

hvor du IKKE tager id feltet med.

Men problemet er måske, at du bruger id som fremmednøgle i andre tabeller, så du ikke bare kan tildele rækkerne nye id numre?

Hvis du ved, at det altid er den laveste id, der er den rigtige, kan du bruge den fra
18/08-2008 21:58:23

INSERT INTO dinNyeTabel
SELECT MIN(id), felt1, felt2, felt3, felt4, felt5, felt6, felt7
FROM dinGamleTabel
GROUP BY felt1, felt2, felt3, felt4, felt5, felt6, felt7

Hvis du ved, at den med det højeste id altid er den rigtige, bruger du MAX(id) i stedet.

Hvis du ikke aner, hvilken af dubletternes id der er den rigtige (brugt som fremmednøgle), er du på skideren!
Så bliver du nødt til at rette alle fremmednøgler der peger på den "forkerte" id først.
Avatar billede jnys Nybegynder
20. august 2008 - 09:57 #5
Jo hvis det dog blot var så enkelt havde jeg fixet det nu.

Problemet er at varenr. er unik for hver vare men bliver ikke brugt som primær nøgle, der bruger jeg atuo num. for at kunne tjekke antal samt i hvilken række der er rekudans data.
Så hvis jeg bruger SELECT DISTINCT med varenr. bliver ingen trukket fra og så er man jo ved start igen.
Min ide var om man kunne SELECT DISTINCT og samtidlig få vist hvilken ID, der hører til den enkelte vare. Så er problemet jo klaret.
Avatar billede jnys Nybegynder
20. august 2008 - 14:22 #6
EKS AF TABEL:

Id    Gnr    VNr            Navn                    Pris    Enhed
1    1100    1102500120    11 X 25 MM FYR U/S    4,56    M
2    1100    1102500150    11 X 25 MM FYR U/S    4,56    M
3    1100    1102500180    11 X 25 MM FYR U/S    4,56    M
4    1100    1102500210    11 X 25 MM FYR U/S    4,56    M
5    1100    1102500240    11 X 25 MM FYR U/S    4,56    M
6    1100    1102500270    11 X 25 MM FYR U/S    4,56    M
7    1100    1102500300    11 X 25 MM FYR U/S    4,56    M
8    1100    1102500330    11 X 25 MM FYR U/S    4,56    M
9    1100    1102500360    11 X 25 MM FYR U/S    4,56    M

-------------------

Rekudant ved navn og pris - Varenr er ligemeget skal kun bruge et af dem.
Avatar billede jnys Nybegynder
20. august 2008 - 18:39 #7
Tjaa det kan gøres meget let på flg måde,
send tabelen til Office 2007 execel og der kan man trykke på et icon der fjerner alle rekudante rækker... Hø  Det var let - hvad man bruger 1 dag om kan laves på 2 min....
Så nu ved du også det :-)

Tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester