/ 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
Select problem!
Fra : Kok


Dato : 16-09-01 10:08

Hej

Jeg følgende tabel, som bla. indeholder følgende felter, på MSSQL:

varer
varenr varekategori
1 1
2 1
3 2
4 3

Nu vil jeg gerne lave et udtræk, hvor jeg kun får alle vare som er alene
i en varekategori. I dette eks. vare 3 og 4.
Hvordan skal min select bygges op?

MVH
Allan



 
 
Mikkel Bundgaard (16-09-2001)
Kommentar
Fra : Mikkel Bundgaard


Dato : 16-09-01 11:09

Kok <alk@it-logic.dk> wrote in message
news:cZZo7.12713$9V5.552324@news000.worldonline.dk...
> Hej
>
> Jeg følgende tabel, som bla. indeholder følgende felter, på MSSQL:
>
> varer
> varenr varekategori
> 1 1
> 2 1
> 3 2
> 4 3
>
> Nu vil jeg gerne lave et udtræk, hvor jeg kun får alle vare som er
alene
> i en varekategori. I dette eks. vare 3 og 4.
> Hvordan skal min select bygges op?
>
> MVH
> Allan
>
Hej Allan

Kan du ikke lave noget ala nedenstående.

SELECT varer.varenr
FROM varer
WHERE varer.varekategori IN (
SELECT varer.varekategori
FROM varer
GROUP BY varer.varekategori
HAVING Count(*) = 1);

Her udvælger jeg alle varenr som ligger i en kategori der kun
indeholder en post.
--
Mikkel Bundgaard
IT University of Copenhagen
http://officehelp.gone.dk
Se SpaceCommunicator - en peer-to-peer chat-applikation i Java



Kok (16-09-2001)
Kommentar
Fra : Kok


Dato : 16-09-01 17:25


"Mikkel Bundgaard" <mikkelbu@teliamail.dk> wrote in message
news:9o1vm3$q25$1@sunsite.dk...
> Hej Allan
>
> Kan du ikke lave noget ala nedenstående.
>
> SELECT varer.varenr
> FROM varer
> WHERE varer.varekategori IN (
> SELECT varer.varekategori
> FROM varer
> GROUP BY varer.varekategori
> HAVING Count(*) = 1);
>
> Her udvælger jeg alle varenr som ligger i en kategori der kun
> indeholder en post.

Det virker fint, men når jeg udbygger søgningen går det galt!

SELECT t_varer.VareNr, t_varer.VareKategoriID, t_add_pris.Add_Pris,
t_add_pris.Add_text FROM t_varer LEFT JOIN t_add_pris ON t_varer.VareNr
= t_add_pris.Add_Nr
WHERE
t_varer.VareKategoriID IN (
SELECT VareKategoriID
FROM t_varer
GROUP BY VareKategoriID
HAVING Count(*) = 1)
AND t_add_pris.Add_Konfiguration = $VareNr AND t_varer.VareType = 'J'
ORDER BY t_varer.VareKategoriID, t_varer.VareNr

Når jeg udføre denne SELECT får alle varer som er alene i en kategori,
og ikke de vare som er alene i denne søgning, som jeg får hvis jeg
undlader:
t_varer.VareKategoriID IN (
SELECT VareKategoriID
FROM t_varer
GROUP BY VareKategoriID
HAVING Count(*) = 1)
AND

Hvordan skal SELECT'en så skrives?

MVH
Allan



Nis Jorgensen (17-09-2001)
Kommentar
Fra : Nis Jorgensen


Dato : 17-09-01 11:39

On Sun, 16 Sep 2001 18:24:56 +0200, "Kok" <alk@it-logic.dk> wrote:

>
>"Mikkel Bundgaard" <mikkelbu@teliamail.dk> wrote in message
>news:9o1vm3$q25$1@sunsite.dk...
>> Hej Allan
>>
>> Kan du ikke lave noget ala nedenstående.
>>
>> SELECT varer.varenr
>> FROM varer
>> WHERE varer.varekategori IN (
>> SELECT varer.varekategori
>> FROM varer
>> GROUP BY varer.varekategori
>> HAVING Count(*) = 1);
>>
>> Her udvælger jeg alle varenr som ligger i en kategori der kun
>> indeholder en post.
>
>Det virker fint, men når jeg udbygger søgningen går det galt!

Så det du vil have er alle varer, som er den eneste i en kategori der
opfylder et kriterie ...

Noget i retning af:

SELECT varer.varenr
FROM varer
WHERE varer.varenr IN (
   SELECT MIN (varenr)
   FROM varer
   WHERE kriterie
   GROUP BY varer.varekategori
   HAVING COUNT(*) =1)



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

Månedens bedste
Årets bedste
Sidste års bedste