Gå til innhold

finne differansen mellom to tall i en spørring


Anbefalte innlegg

Jeg har en tabell barnehage.

Den har en kapasitet (int), jeg har en tabell som holder styr på hvilke barn som går i hvilken barnehage,

 

barnehageID | barn-identifikator

 

Så skal jeg forsøke å finne ut om barnehage x har ledig kapasitet (dvs det er færre barn som går i barnehagen enn kapasiteten tillater)

 

Jeg har lyst å gjøre dette med en spørring, og lurer på om det er mulig.

Jeg har laget noe slikt som denne

String sql = "select capacity - (select count(childSSN) as no from coverage) as capacity from kinderg where kid = " + k.getID();

 

men den gir kapasitet - alle barn som har barnehageplass i alle barnehager, og det er ikke det jeg ønsker.

 

Noen som har noen tips? Må jeg virkelig bruke to spørringer?

Lenke til kommentar
Videoannonse
Annonse
Jeg har en tabell barnehage.

Den har en kapasitet (int), jeg har en tabell som holder styr på hvilke barn som går i hvilken barnehage,

 

barnehageID | barn-identifikator

 

Så skal jeg forsøke å finne ut om barnehage x har ledig kapasitet (dvs det er færre barn som går i barnehagen enn kapasiteten tillater)

 

Jeg har lyst å gjøre dette med en spørring, og lurer på om det er mulig.

Jeg har laget noe slikt som denne

String sql = "select capacity - (select count(childSSN) as no from coverage) as capacity from kinderg where kid = " + k.getID();

 

men den gir kapasitet - alle barn som har barnehageplass i alle barnehager, og det er ikke det jeg ønsker.

 

Noen som har noen tips? Må jeg virkelig bruke to spørringer?

6142041[/snapback]

 

Count, sum, osv. brukes som regel sammen med "group by". Lykke til.

Lenke til kommentar
For ikke å snakke om at joins som regel er mer effektivt enn subqueries.

6144041[/snapback]

 

Men dette er en negasjonsjoin.

 

Altså - velg alle søknader MINUS de søknadene som også er registrert i har-barnehageplass-listen.

 

Kan jeg løse dette med en join?

Lenke til kommentar
Kan jeg løse dette med en join?

6147345[/snapback]

Ikke noe problem. Sjekk dette kodeeksempelet laget i MSSQL:

 

create table a (
 id int,
 capacity int
);
go

create table b (
 id int identity,
 aid int
);
go

insert into a values (1,5);
insert into a values (2,7);
go

insert into b values (1);
insert into b values (2);
insert into b values (1);
insert into b values (2);
insert into b values (1);
go

select
a.id, a.capacity-(select count(id) from b where b.aid = a.id)
from a; go

select a.id, a.capacity-count(b.id) from a inner join b on (a.id = b.aid) 
group by a.id, a.capacity

 

Du kan jo selv teste de to spørringene her, og se at de returnerer det samme resultatet. Mao: Ja, du kan bruke join.

Endret av roac
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...