Gå til innhold

Anbefalte innlegg

Jeg har et felt i en database som standard lagres uten innhold, men kan etterhvert endres til 1 med et annet script. Det smarteste hadde nok vært å latt den bli lagret med 0 fra starten, men jeg orker ikke forandre scriptet og alt som allerede er lagret i databasen.

 

Iallefall, det jeg lurer på er; hvis jeg skal hente ut de som ikke har blitt satt til 1, hva gjør jeg da? Det virker ikke med where felt != 1, den henter kun ut felter som har innhold som ikke er 1. Prøvd med frem med ting lignende where felt = null eller where felt = '' uten hell.

 

Noen som vet hva jeg skal bruke?

Lenke til kommentar
Videoannonse
Annonse

Nå har du ikke nevnt hvilken database du

 

Du må bruke IS NULL eller IS NOT NULL hvis du skal sjekke om det felt er null/ikke null. Hvis du bruker en annen sammenligningsoperator vil du ALLTID få false.

 

SELECT * FROM mytest WHERE testfelt <> 1 OR testfelt IS NULL

 

henter ut alle rader som er null og alle radene som har en annen verdi enn 1.

 

Hvis du skal ha ett felt som er true/false så hadde jeg brukt boolean som felt-type. Hvis du egentlig burde ha laget en anne tabell som dette feltet peker på så hadde jeg lagd den ekstra tabellen som sier hva 1 faktisk betyr.

 

F.eks hvis feltet er betalingstype, og du nå har definert 1 til å være visa og null til å være ikke satt, så hadde det passet med en tabell som ser slik ut:

 

create table paymenttype (

paymenttypeid serial primary key not null,

description text

)

 

la oss si at du i utgangspunktet hadde en tabell som innehold informasjon om transaksjonen, f.eks

 

CREATE TABLE transaction (

transactionid serial primary key not null,

id_contactid integer REFERENCES contact,

id_paymenttypeid integer REFERENCES paymenttype,

started timestamp,

ended timestamp

)

 

du må da også ha en tabell, contact, med primary key contactid...

Lenke til kommentar
Nå har du ikke nevnt hvilken database du

 

Du må bruke IS NULL eller IS NOT NULL hvis du skal sjekke om det felt er null/ikke null. Hvis du bruker en annen sammenligningsoperator vil du ALLTID få false.

 

SELECT * FROM mytest WHERE testfelt <> 1 OR testfelt IS NULL

 

henter ut alle rader som er null og alle radene som har en annen verdi enn 1.

 

Hvis du skal ha ett felt som er true/false så hadde jeg brukt boolean som felt-type. Hvis du egentlig burde ha laget en anne tabell som dette feltet peker på så hadde jeg lagd den ekstra tabellen som sier hva 1 faktisk betyr.

 

F.eks hvis feltet er betalingstype, og du nå har definert 1 til å være visa og null til å være ikke satt, så hadde det passet med en tabell som ser slik ut:

 

create table paymenttype (

  paymenttypeid serial primary key not null,

  description text

)

 

la oss si at du i utgangspunktet hadde en tabell som innehold informasjon om transaksjonen, f.eks

 

CREATE TABLE transaction (

  transactionid serial primary key not null,

  id_contactid integer REFERENCES contact,

  id_paymenttypeid integer REFERENCES paymenttype,

  started timestamp,

  ended timestamp

)

 

du må da også ha en tabell, contact, med primary key contactid...

8312791[/snapback]

 

Beklager, det var iallefall MySQL.

 

Takk, det funket iallefall på scriptet mitt ;)

 

Grunnen til at det ble som det ble, var at jeg har lagt til det feltet i tabellen i etterkant, og jeg orker ikke å begynne å sette meg inn i gammel kode og gjøre om slik at ting blir lagret med 0 i det feltet.

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å
×
×
  • Opprett ny...