23. maj 2002 - 14:08
Der er
7 kommentarer og 2 løsninger
'if' i SQL sætning
Jeg har lige et lidt underligt spørgsmål. Det er lidt kryptisk at forklare så jeg prøver lige med et eksempel. Hvis jeg har en tabel med felterne: ID, Status, Navn Her vil jeg gerne vælge alle linjer med navnet peter, men KUN hvis der står 'a' i status feltet Det hele SKAL være i én sætning. Giver dette mening??
Annonceindlæg fra Infor
SELECT * FROM TabelNavn WHERE Status='a' AND Navn='Peter';
Så nemt er det jo nok ikke. Så henter den jo kun linjer hvor der står a og peter. Det tricky er jo at den også skal hente alle de andre linjer. Jeg prøver lige at forklare det igen. Grundlæggende er det bare SELECT * FROM tabel Det tricky er hvis der står 'a' i status feltet SKAL der stå 'peter' i navne feltet, ellers skal den pågældende linje ikke med i resultsettet Gav det mere mening.
NETOP: Du vil have alle records, hvor der står 'a' i status OG 'peter' i navn !!! Alternativt: SELECT * FROM tabelNavn WHERE Status<>'a' UNION SELECT * FROM TabelNavn WHERE Status='a' AND Navn='Peter';
Den henter alle records med status <>'a' OG de records med status 'a', som hedder 'Peter'...
Ok jeg prøver lige én gang til. Lad os sige at jeg har disse linjer: 1 a peter 2 a niels 3 b peter 4 b niels Mit søgeresultat skal så være: 1 a peter 3 b peter 4 b niels Giver det mening nu?
Desuden er UNION vel også en MySQL 4.0 ting. Eller tager jeg fejl?
Du burde da godt kunne bruge UNION tidligere... Og ellers er det den rigtige syntax, til at løse dit problem...
Du modsiger godt nok dig selv lidt i dine forklaringer af det ønskede output, men jeg prøver følgende - som matcher en af dine forklaringer (ligesom proaccess' svar besvarede første forklaring) SELECT * FROM TabelNavn WHERE (Navn!='Peter') OR (Navn='Peter' AND Status='a');
-> tipsen Der var den jo. Tak for hjælpen
Computerworld tilbyder specialiserede kurser i database-management