webForumDet fria alternativet

Svår select statment

5 svar · 489 visningar · startad av johe

joheMedlem sedan mars 20073 inlägg
#1

Hej.

Jag har en databas som innehåller följande.

Namn Adress Postnummer Postort
Pelle, Blåvägen 10, 100 10, Stockholm
Johan, Gulavägen 10, 100 20, Stockholm
Anna, Rosavägen 10, 100 30, Stockholm
Sara, Blåvägen 20, 100 10, Stockholm
Sofia, Gulavägen 20, 100 20, Stockholm

hur gör jag för att visa alla som har samma postnummer och och ort som Pelle?

LarsGMedlem sedan dec. 200012 464 inlägg
#2
select * 
  from databas 
  where (Postnummer,postort)
  in (select postnummer,postort
        from databas
   where namn = 'Pelle')

alternativt, om din DBMS inte har stöd för row expressions

select * 
  from databas db 
  where exists
    (select *
        from databas q
   where namn = 'Pelle'
    and q.postnummer = db.postnummer
    and q.postort = db.postort)

existentiell fråga. har Pelle samma postnummer och postort som Pelle?

joheMedlem sedan mars 20073 inlägg
#3

Tack

select *
from database
where (postnummer
in (select postnummer
from database where
namn like '%pelle%'))

denna funkar men kör jag

select *
from databas
where (Postnummer,postort)
in (select postnummer,postort
from databas
where namn = 'Pelle')

så får jag felmedelande

//Johan

emissionMedlem sedan dec. 19996 721 inlägg
#4

...och LarsG tog ju så vänligt fram ett exempel på hur du ska skriva om din DBMS inte stöder row expressions, vilket antagligen är fallet här.

joheMedlem sedan mars 20073 inlägg
#5

ny fråga

Hej Lars.

Undrar om du kunde hjälpa mig med en annan sak

Jag har en databas som innehåller följande.

Namn Adress Postnummer Postort
Pelle, Blåvägen 20, 100 10, Stockholm
Johan, Gulavägen 10, 100 20, Stockholm
Anna, Rosavägen 10, 100 30, Stockholm
Sara, Blåvägen 20, 100 10, Stockholm
Sofia, Gulavägen 20, 100 20, Stockholm

hur gör jag för att räkna utt hur många som bor på Blåvägen 20 men som inte heter pelle

/Johan Hellström

lillebrorMedlem sedan apr. 20041 597 inlägg
#6

Testa med...

Alt. 1
SELECT COUNT(*) AS antal
FROM databas
WHERE adress = 'Blåvägen 20' AND namn != 'Pelle'

Alt. 2

SELECT COUNT(*) AS antal
FROM databas
WHERE adress = 'Blåvägen 20' AND namn <> 'Pelle'
265 ms totalt · 3 externa anrop · v20260731065814-full.30151723
137 ms — hämta forumlista (db)
126 ms — hämta statistik (db)
131 ms — hämta tråd, inlägg och bilagor (db)