|
| SQL hjælp alm. master detail Fra : Peter |
Dato : 28-02-04 10:06 |
|
Hej - Håber i kan hjælpe mig.
Jeg har en master - detail database hvor jeg skal have slettet alle de
masters der ikke har nogle details.
Helt præcis. Jeg har en tabel OrdreHoved og en tabel OrdreLinie.
Nu vil jeg slette alle de hoveder der ikke har nogle linier.
De to tabeller er bundet sammen med Ordrenr.
Havde forstillet mig noget i stil med en Delete på alle de hoveder, hvor
Count (*) på linierne er lig 0. Men har lidt problemer med syntaxen på det.
Mvh
Allan
| |
Mark S. Rasmussen (28-02-2004)
| Kommentar Fra : Mark S. Rasmussen |
Dato : 28-02-04 23:13 |
|
> Helt præcis. Jeg har en tabel OrdreHoved og en tabel OrdreLinie.
> Nu vil jeg slette alle de hoveder der ikke har nogle linier.
>
> De to tabeller er bundet sammen med Ordrenr.
>
> Havde forstillet mig noget i stil med en Delete på alle de hoveder, hvor
> Count (*) på linierne er lig 0. Men har lidt problemer med syntaxen på
det.
Hvad med noget lignende:
DELETE FROM [OrdreHoved] OH WHERE (SELECT COUNT(*) FROM [OrdreLinie] OL
WHERE OL.[Ordrenr] = OH.[Ordrenr]) = 0
Det forudsætter at du bruger MsSQL / Access, såvidt jeg ved understøtter
MySQL ikke sub selects.
Mvh
Mark S. Rasmussen
--
www.improve.dk
| |
"> Allan (29-02-2004)
| Kommentar Fra : "> Allan |
Dato : 29-02-04 17:48 |
|
> Hvad med noget lignende:
>
> DELETE FROM [OrdreHoved] OH WHERE (SELECT COUNT(*) FROM [OrdreLinie] OL
> WHERE OL.[Ordrenr] = OH.[Ordrenr]) = 0
>
> Det forudsætter at du bruger MsSQL / Access, såvidt jeg ved understøtter
> MySQL ikke sub selects.
Det var en Access-basse og mange tak. Det var lige sådan jeg havde tænkt
det, kunne bare ikke få det ind i mine fingre og videre ned på tastaturet.
Takker igen.
Mvh
Allan
| |
Kristian Damm Jensen (01-03-2004)
| Kommentar Fra : Kristian Damm Jensen |
Dato : 01-03-04 08:54 |
|
Peter wrote:
> Hej - Håber i kan hjælpe mig.
> Jeg har en master - detail database hvor jeg skal have slettet alle de
> masters der ikke har nogle details.
>
> Helt præcis. Jeg har en tabel OrdreHoved og en tabel OrdreLinie.
> Nu vil jeg slette alle de hoveder der ikke har nogle linier.
>
> De to tabeller er bundet sammen med Ordrenr.
>
> Havde forstillet mig noget i stil med en Delete på alle de hoveder,
> hvor Count (*) på linierne er lig 0. Men har lidt problemer med
> syntaxen på det.
Prøv at læse på exists og not exists.
--
Kristian Damm Jensen damm (at) ofir (dot) dk
Those who desire to give up Freedom in order to gain Security, will not
have, nor do they deserve, either one. -- Thomas Jefferson
| |
"> Allan (01-03-2004)
| Kommentar Fra : "> Allan |
Dato : 01-03-04 23:59 |
|
> > Hej - Håber i kan hjælpe mig.
> > Jeg har en master - detail database hvor jeg skal have slettet alle de
> > masters der ikke har nogle details.
> >
> > Helt præcis. Jeg har en tabel OrdreHoved og en tabel OrdreLinie.
> > Nu vil jeg slette alle de hoveder der ikke har nogle linier.
> >
> > De to tabeller er bundet sammen med Ordrenr.
> >
> > Havde forstillet mig noget i stil med en Delete på alle de hoveder,
> > hvor Count (*) på linierne er lig 0. Men har lidt problemer med
> > syntaxen på det.
>
> Prøv at læse på exists og not exists.
Det har jeg hørt før det der! Er det "rigtig" SQL?
Mvh
Allan
| |
Mark S. Rasmussen (02-03-2004)
| Kommentar Fra : Mark S. Rasmussen |
Dato : 02-03-04 19:57 |
|
> > Prøv at læse på exists og not exists.
>
> Det har jeg hørt før det der! Er det "rigtig" SQL?
Ja, det er såmæn rigtig SQL. Det er sådan set det samme jeg gør, bare uden
keywordet. Samme SQL sætning kunne skrives således:
DELETE FROM [OrdreHoved] OH WHERE NOT EXISTS (SELECT * FROM [OrdreLinie] OL
WHERE OL.[Ordrenr] = OH.[Ordrenr])
Mvh
Mark S. Rasmussen
--
www.improve.dk
| |
"> Allan (15-03-2004)
| Kommentar Fra : "> Allan |
Dato : 15-03-04 00:06 |
|
> > > Prøv at læse på exists og not exists.
> >
> > Det har jeg hørt før det der! Er det "rigtig" SQL?
>
> Ja, det er såmæn rigtig SQL. Det er sådan set det samme jeg gør, bare uden
> keywordet. Samme SQL sætning kunne skrives således:
>
> DELETE FROM [OrdreHoved] OH WHERE NOT EXISTS (SELECT * FROM [OrdreLinie]
OL
> WHERE OL.[Ordrenr] = OH.[Ordrenr])
Sejt!
| |
Kristian Damm Jensen (02-03-2004)
| Kommentar Fra : Kristian Damm Jensen |
Dato : 02-03-04 07:36 |
|
>>> Hej - Håber i kan hjælpe mig.
>>> Jeg har en master - detail database hvor jeg skal have slettet alle
>>> de masters der ikke har nogle details.
>>>
>>> Helt præcis. Jeg har en tabel OrdreHoved og en tabel OrdreLinie.
>>> Nu vil jeg slette alle de hoveder der ikke har nogle linier.
>>>
>>> De to tabeller er bundet sammen med Ordrenr.
>>>
>>> Havde forstillet mig noget i stil med en Delete på alle de hoveder,
>>> hvor Count (*) på linierne er lig 0. Men har lidt problemer med
>>> syntaxen på det.
>>
>> Prøv at læse på exists og not exists.
>
> Det har jeg hørt før det der! Er det "rigtig" SQL?
Bestemt. Og har været det siden starten.
For mig er det noget af det mest grundlæggende, og mere vigtigt end "pjat"
som count, max og min.
--
Kristian Damm Jensen damm (at) ofir (dot) dk
The only substitute for good manners is quick reflexes.
| |
|
|