/ 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
Omskrivning af SQL-sætning
Fra : WebLock


Dato : 09-04-03 14:58

Denne SQL-sætning skulle virke i MySQL 4.1, men det webhotel jeg har adgang
til kører kun version 4.0, hvor denne sætning ikke er understøttet, så er
der en smart fætter herinde, der kan finde ud af at omskrive den til et
eller andet der virker i v4.0?

select * from plante where id not in (select plante_id from
kategori_plante_rel where kategori_plante_rel.kategori_id = 205)

Webber



 
 
Nis Jorgensen (09-04-2003)
Kommentar
Fra : Nis Jorgensen


Dato : 09-04-03 16:41

On Wed, 9 Apr 2003 15:58:25 +0200, "WebLock"
<skummelFJERN@DETTEgadefejer.dk> wrote:

>Denne SQL-sætning skulle virke i MySQL 4.1, men det webhotel jeg har adgang
>til kører kun version 4.0, hvor denne sætning ikke er understøttet, så er
>der en smart fætter herinde, der kan finde ud af at omskrive den til et
>eller andet der virker i v4.0?
>
>select * from plante where id not in (select plante_id from
>kategori_plante_rel where kategori_plante_rel.kategori_id = 205)

Hmmm - det er en svær en ... her er et forsøg

SELECT plante.felt1, plante.felt2, plante.felt3
FROM plante LEFT JOIN kategori_plante_rel AS kpr ON plante.id =
kpr.plante_id
GROUP BY plante.felt1, plante.felt2, plante.felt3, kpr.plante_id
HAVING Max(IF(kpr.kategori_id = 205,1,0)) = 0
OR kpr.plante_id IS NULL

--
Nis Jørgensen
Amsterdam

Please include only relevant quotes, and reply below the quoted text. Thanks

Peter Brodersen (09-04-2003)
Kommentar
Fra : Peter Brodersen


Dato : 09-04-03 17:17

On Wed, 09 Apr 2003 17:40:47 +0200, Nis Jorgensen <nis@dkik.dk> wrote:

>HAVING Max(IF(kpr.kategori_id = 205,1,0)) = 0

Denne kan vist skæres ned til
HAVING MAX(kpr.kategori_id = 205) = 0

Eller evt. bare:
HAVING NOT MAX(kpr.kategori_id = 205)
eller
HAVING !MAX(kpr.kategori_id = 205)

--
- Peter Brodersen

WebLock (09-04-2003)
Kommentar
Fra : WebLock


Dato : 09-04-03 19:09

I 2 er for seje! Jeg var SÅ tæt på at opgive og lave noget slam kode (i asp)
i stedet til at få det rigtige resultat frem.
Jeg mener ellers selv at jeg er rimelig ok til SQL, men jeg forstår slet
ikke den sætning der og havde aldrig fundet frem til den selv; men
umiddelbart får jeg det rigtige resultat ud af det, så jeg er rigtigt glad
:)

Mange tak for hjælpen!
Webber



Nis Jorgensen (10-04-2003)
Kommentar
Fra : Nis Jorgensen


Dato : 10-04-03 08:42

On Wed, 09 Apr 2003 18:17:01 +0200, Peter Brodersen <usenet@ter.dk>
wrote:

>On Wed, 09 Apr 2003 17:40:47 +0200, Nis Jorgensen <nis@dkik.dk> wrote:
>
>>HAVING Max(IF(kpr.kategori_id = 205,1,0)) = 0
>
>Denne kan vist skæres ned til
>HAVING MAX(kpr.kategori_id = 205) = 0
>
>Eller evt. bare:
>HAVING NOT MAX(kpr.kategori_id = 205)
>eller
>HAVING !MAX(kpr.kategori_id = 205)

Det skal nok passe. Jeg var ikke sikker på om mySQL havde True=-1,
True=1 eller kun True=True.

--
Nis Jørgensen
Amsterdam

Please include only relevant quotes, and reply below the quoted text. Thanks

Jesper Stocholm (10-04-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 10-04-03 10:44

WebLock wrote :

> Denne SQL-sætning skulle virke i MySQL 4.1, men det webhotel jeg har
> adgang til kører kun version 4.0, hvor denne sætning ikke er
> understøttet, så er der en smart fætter herinde, der kan finde ud af
> at omskrive den til et eller andet der virker i v4.0?
>
> select * from plante where id not in (select plante_id from
> kategori_plante_rel where kategori_plante_rel.kategori_id = 205)

[1] er en side, hvor der står nogle fifs til hvordan man skriver SQL uden
at bruge nestede selects (subselects).



[1] http://www.mysql.com/doc/en/ANSI_diff_Sub-selects.html

--
Jesper Stocholm - http://stocholm.dk
www.asp-faq.dk : FAQ for dk.edb.internet.webdesign.serverside.asp
www.usenet.dk/netikette/citatteknik.html : Skriv under det du svarer på
Svar til gruppen og ikke til mig privat !

Nis Jorgensen (10-04-2003)
Kommentar
Fra : Nis Jorgensen


Dato : 10-04-03 10:52

On Thu, 10 Apr 2003 09:43:57 +0000 (UTC), Jesper Stocholm
<jespers@stocholm.invalid> wrote:

>WebLock wrote :
>
>> Denne SQL-sætning skulle virke i MySQL 4.1, men det webhotel jeg har
>> adgang til kører kun version 4.0, hvor denne sætning ikke er
>> understøttet, så er der en smart fætter herinde, der kan finde ud af
>> at omskrive den til et eller andet der virker i v4.0?
>>
>> select * from plante where id not in (select plante_id from
>> kategori_plante_rel where kategori_plante_rel.kategori_id = 205)
>
>[1] er en side, hvor der står nogle fifs til hvordan man skriver SQL uden
>at bruge nestede selects (subselects).

Jep, og her er en både kortere og "renere" løsning, inspireret derfra:

SELECT plante.*
FROM plante LEFT JOIN kategori_plante_rel AS kpr ON plante.id =
kpr.plante_id AND kpr.kategori_id = 205
WHERE kpr.plante_id IS NULL

--
Nis Jørgensen
Amsterdam

Please include only relevant quotes, and reply below the quoted text. Thanks

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