/ 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 - LEFT JOIN i en sletning af række
Fra : Peter Henriksen


Dato : 16-09-07 09:25

Jeg leder efter en SQL der kan slette alle de produkter, om ikke har en
gruppe længere.


Tabellerne:

produkter
---------
ID
Ref_Gruppe_ID
Navn

grupper
-------
ID


Jeg ser to løsninger:
- En løkke i et script der finder deres ID'er ved at LEFT JOINe med
grupper
og se hvilke der er NULL og derefter en DELETE på de ID'er

- En UPDATE og LEFT JOIN der sætter alle Ref_Gruppe_ID til 0
En DELETE på alle der har 0 i Ref_Gruppe_ID

Men er der ikke alternativer der kan klare det i een SQL?



 
 
Michael Zedeler (16-09-2007)
Kommentar
Fra : Michael Zedeler


Dato : 16-09-07 09:52

Peter Henriksen wrote:
> Jeg leder efter en SQL der kan slette alle de produkter, om ikke har en
> gruppe længere.
>
>
> Tabellerne:
>
> produkter
> ---------
> ID
> Ref_Gruppe_ID
> Navn
>
> grupper
> -------
> ID

DELETE FROM produkter WHERE Ref_Gruppe_ID IS NULL

Mvh. Michael.

Peter Brodersen (16-09-2007)
Kommentar
Fra : Peter Brodersen


Dato : 16-09-07 14:36

On Sun, 16 Sep 2007 10:51:58 +0200, Michael Zedeler
<michael@zedeler.dk> wrote:

>> Jeg leder efter en SQL der kan slette alle de produkter, om ikke har en
>> gruppe længere.
>>
>>
>> Tabellerne:
>>
>> produkter
>> ---------
>> ID
>> Ref_Gruppe_ID
>> Navn
>>
>> grupper
>> -------
>> ID
>
>DELETE FROM produkter WHERE Ref_Gruppe_ID IS NULL

Der er ingen foreign key constraint, så Ref_Gruppe_ID kan sagtens
indeholde en værdi, uden at denne findes i tabellen "grupper".

--
- Peter Brodersen
Kendt fra Internet

Kristian Damm Jensen (16-09-2007)
Kommentar
Fra : Kristian Damm Jensen


Dato : 16-09-07 19:53

Peter Brodersen wrote:
> On Sun, 16 Sep 2007 10:51:58 +0200, Michael Zedeler
> <michael@zedeler.dk> wrote:
>
>>> Jeg leder efter en SQL der kan slette alle de produkter, om ikke
>>> har en gruppe længere.
>>>
>>>
>>> Tabellerne:
>>>
>>> produkter
>>> ---------
>>> ID
>>> Ref_Gruppe_ID
>>> Navn
>>>
>>> grupper
>>> -------
>>> ID
>>
>> DELETE FROM produkter WHERE Ref_Gruppe_ID IS NULL
>
> Der er ingen foreign key constraint, så Ref_Gruppe_ID kan sagtens
> indeholde en værdi, uden at denne findes i tabellen "grupper".

DELETE FROM produkter
WHERE not exists
(select * from grupper where produkter.Ref_Gruppe_ID = ID)

--
Venlig hilsen /Best regards
Kristian Damm Jensen



Peter Henriksen (16-09-2007)
Kommentar
Fra : Peter Henriksen


Dato : 16-09-07 20:16

> DELETE FROM produkter
> WHERE not exists
> (select * from grupper where produkter.Ref_Gruppe_ID = ID)

Ahh det er sådan man får sub selecten skruet sammen.
Forsøgte med alt muligt, men det der er da smart.

Tak.



Peter Brodersen (16-09-2007)
Kommentar
Fra : Peter Brodersen


Dato : 16-09-07 14:36

On Sun, 16 Sep 2007 10:24:48 +0200, "Peter Henriksen"
<peter.henriksen@yahoo.xxx> wrote:

>Men er der ikke alternativer der kan klare det i een SQL?

Fra MySQL 4.0 kan du lave en delete over flere tabeller. Her kan man
slette fra én tabel ved at krydsreferere over flere tabeller. Man kan
også slette fra flere tabeller på én gang, men det er ikke relevant
her.

Den query, du skal have fat i, ser sådan ud:

DELETE produkter
FROM produkter
LEFT JOIN grupper ON produkter.Ref_Gruppe_ID = grupper.ID
WHERE grupper.ID IS NULL

--
- Peter Brodersen
Kendt fra Internet

Peter Henriksen (16-09-2007)
Kommentar
Fra : Peter Henriksen


Dato : 16-09-07 20:10


"Peter Brodersen" <usenet2007@ter.dk> wrote in message
news:46ed315e$0$90275$14726298@news.sunsite.dk...
> On Sun, 16 Sep 2007 10:24:48 +0200, "Peter Henriksen"
> <peter.henriksen@yahoo.xxx> wrote:
>
>>Men er der ikke alternativer der kan klare det i een SQL?
>
> Fra MySQL 4.0 kan du lave en delete over flere tabeller.

Nice. Jeg havde netop ikke prøvet det da jeg åbenbart hang fast i 3.23
syntaks.
Nu virker det - mange tak.



Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste