SQL-fråga

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Halmstad
  • 2011-04-14 19:29

Jag har ett formulär med tre text-boxar där man genom att fylla i en eller flera söker i vårt medlemsregister. Problemet är att ett av fälten man söker på kan vara NULL och då hittas inga poster alls oavsett om man får träff på de andra fälten. Hur konstruerar jag frågan så jag hittar poster även när det tredje fältet är NULL. Frågan ser (något förenklad) ut så här nu:

SELECT fornamn, efternamn, adress FROM Medlemmar WHERE Fornamn LIKE '%$fornamn%' AND Efternamn LIKE '%$efternamn%' AND Adress LIKE '%$adress%'

Det är alltså Adress som ibland saknar värden i databasen.

Sätt defaultvärdet till blankt istället för NULL i tabellen, nog enklaste lösningen.

  • Medlem
  • Sandviken, Sweden, Sweden
  • 2011-04-14 22:22

Det borde funka...

SELECT fornamn,
efternamn,
adress
FROM medlemmar
WHERE fornamn LIKE '%$fornamn%'
AND ( efternamn LIKE '%$efternamn%'
OR efternamn IS NULL )
AND adress LIKE '%$adress%'

OR finns väl inte i SQL vad jag vet.. Isåfall har jag missat nåt, var några år sen jag höll på med det.

Som jag skrev i mitt första svar, sätt defaultvärde på fältet till blankt istället för NULL.

Klart att OR finns i SQL. Går att skriva t ex:

..WHERE (fornamn LIKE '%fornamn%' OR fornamn = NULL)
AND (efternamn LIKE '%efternamn%' OR efternamn = NULL)
AND (adress LIKE '%adress%' OR adress = NULL)

EDIT: Iofs löser det inte problemet då man i så fall får träff på alla nullposter, det vill man säkert inte.. Men typ "WHERE (fornamn <> NULL AND fornamn LIKE '%fornamn%') AND.." .. Jaja, ni fattar säkert.

  • Medlem
  • Halmstad
  • 2011-04-15 08:33

Hejsan
Detta funkade
... AND (adress LIKE '%adress%' OR adress IS NULL)

Tack så mycket för er hjälp.

  • Oregistrerad
  • 2011-04-15 09:12

LIKE skulle jag använda, det är enklast. Tänk dock på om man då inte anger något i textboxarna så listas alla medlemmar..

1
Bevaka tråden