/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
mysql - Fjerne dubletter fra 2 tabeller
Fra : Ukendt


Dato : 25-11-02 23:05

Hejsa ...

Lige et lille problem

Jeg har 2 tabeller

en med nogen bruger_session (nogen mystiske bogstaver og tal)
også har jeg en tabel med en indkøbskurv, som referere til
bruger_session

Nu får jeg fjernet alle de bruger_sessions som ikke er gyldige mere,
dvs ældre en x antal dage

Men nu vil jeg også gerne have slettet den dertil hørende
indkøbskurv...

Hvordan gør jeg så det ?

Altså

Jeg finder alle de bruger_sessions som stadig virker og fjerner alle
de indkøbskurve som IKKE har en reference ?

Kan dette gøres vedhjælp af et enkelt opkald til mysql databasen -
Eller skal jeg have gang i flere operationer?

 
 
Jens Gyldenkærne Cla~ (25-11-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-11-02 23:34

-Martin- skrev:

> Nu får jeg fjernet alle de bruger_sessions som ikke er gyldige
> mere, dvs ældre en x antal dage
>
> Men nu vil jeg også gerne have slettet den dertil hørende
> indkøbskurv...
>
> Hvordan gør jeg så det ?

Den letteste måde er ved hjælp af en kaskadevis deletehandling
(referentiel integritet) - men det er jeg ikke sikker på at mySQL
understøtter. Men hvis det er understøttet så er ideen altså at du
definerer en relation mellem din brugertabel (primærtabellen) og
din indkøbskurvtabel (sekundærtabellen). Relationen betyder at du
ikke kan oprette en post i sekundærtabellen uden at der findes en
tilhørende post i primærtabellen (denne del af referentiel
integritet kan de fleste databaseprogrammer vist håndtere). Hvis
relationen så er defineret med kaskadehandlinger (ON DELETE
CASCADE, ON UPDATE CASCADE) vil en sletning af en post i
primærtabellen automatisk betyde at poster i sekundærtabellen også
slettes.

> Jeg finder alle de bruger_sessions som stadig virker og
> fjerner alle de indkøbskurve som IKKE har en reference ?

Uden cascade kan det gøres på to måder:
Enten ved at slette posterne i sekundærtabellen før de slettes fra
primærtabellen (så kan du benytte join til at slette dem, hvis du
da ikke ligefrem kender fremmednøglen [1]) - eller også kan du "rydde
op" ved at lave en forespørgsel der finder alle forældreløse poster i
indkøbskurvtabellen. Det sidste kan gøres med et left join med
kriteriet at nøglefeltet på højresiden skal være null.

Noter:
======

[1] Hvis du sletter data i brugertabellen ved hjælp af den nøgle der
også findes i indkøbskurvtabellen kan du bare køre to
sletteforespørgsler i stedet for en
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste