09. september 2012 - 17:48Der er
8 kommentarer og 1 løsning
Specifik søgekriterie (WHERE ='') der returnerer alle rækker
Et lidt omvendt spørgsmål, men findes et tegn eller udtryk der for WHERE virker som *'en i en almindelig forespørgsel. (select * from ...)?
Sagen er den jeg skal bruge den til at lave en liste fra en medlems database. Her kan brugeren vælge flere kriterier, er et kriterie ikke valgt, skal der ikke sorteres på baggrund af det kriterie. Den skal altså bare udgå fra SQL-forespørgslen. Hvis der er nogen der sidder inde med en smartere måde at gøre dette på, er det mere end velkommen.
Her kan brugeren vælge flere kriterier, er et kriterie ikke valgt, skal der ikke sorteres på baggrund af det kriterie kunne du ikke ligge de selected kriterier i et array, og anvende IN til din søgning
Muligvis. Er ikke den store bruger af IN. For at benytte IN, skal jeg så ikke kende de enkelte ID's på forhånd?
Jeg har fx. 3 kriterier "hold", "aar", og "kon" (køn). Jeg kan ikke lige se hvordan jeg skal bruge IN, hvis jeg gerne vil søge med fx. aar="2012" AND kon="mand"
altså
select * from medlemmer where aar="2012" AND kon="mand"
Du siger, tror jeg, at hvis brugeren vælger 2012, så skal der søges på det år, SELECT * FROM medlemmer WHERE aar = "2012". Hvis brugeren ikke vælger et år, så skal der søges på alle år, og du drømmer om SELECT * FROM medlemmer WHERE aar = * Den kender jeg ikke. Men du er formodenlig klar over at SELECT * FROM medlemmer WHERE 1 giver dig alle rækker. Jeg testede lige at SELECT * FROM medlemmer WHERE 1 AND aar = "2012" virker, du får alle rækker med år 2012.
Jeg kunne forestille mig, i applikationen (for eksempel i php), at opbygge en sql streng med WHERE = 1 og så for hver kriterium hvor brugeren gør et valg, for eksempel aar, tilføje " AND aar = ". $_POST['aar']
såsom (ikke testet):
$where = ""; if($_POST['aar']) $where .= " AND aar = " . $_POST['aar']; if($_POST['kon']) $where .= " AND kon = " . $_POST['kon']; o.s.v. $sql = "SELECT * FROM medlemmer WHERE 1 $where";
Christian /> Det var lige det jeg var på jagt efter!! "WHERE 1" Har fået fyldt de enkelte kriterier på, det gik bare ged i den, når første kriterie ikke blev valgt.
Du skal have stor tak! Har været en kende frustreret over hvordan jeg kom udenom WHERE. Smid et svar så får du point.
og hvis man vil have alle, saa saetter man bare parameteren til null.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.