webForumDet fria alternativet

Svår select statment

Databaser & SQLur Databashanterare & SQL

5 svar · 489 visningar · startad av johe

Medlem sedan mars 20073 inlägg
Frågan#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?

Medlem 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?

Medlem 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

Medlem 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.

Medlem 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

Medlem 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'
135 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)