Avatar billede keet Nybegynder
11. april 2005 - 19:01 Der er 5 kommentarer og
1 løsning

array og sql

Jeg har følgende array:
$arr_options = array(
        "22" => array(2,26),
        "14" => array(16,19));

Og så har jeg en tabel:
id: options_id: option_value_id
1    22        2
2    22        26
3    22        24
4    14        33
5    14        19
6    14        16
7    14        6

Jeg ønsker at selecte de værdier der IKKE matcher værdierne i arrayet, så jeg ender op med følgende resultat:
id: options_id: option_value_id
3    22        24
4    14        33
7    14        6


Er det muligt og hvordan kan jeg gøre det?
Avatar billede barklund Nybegynder
11. april 2005 - 19:04 #1
hm, ikke nemt. Er det noget, du skal køre ofte? For det vil blive lidt hackset - så vidt jeg lige kan regne mig frem til :)
Avatar billede barklund Nybegynder
11. april 2005 - 19:10 #2
Det er dog ikke svært - men det laver en ordentlig where-sætning:

$arr_options = array(
        "22" => array(2,26),
        "14" => array(16,19));
$where = " options_id NOT IN (".join(",",array_keys($arr_options).")";
foreach($arr_options as $key = $opts) {
    $where .= " OR (options_id = $key AND options_value_id NOT IN (".join(",",array_keys($opts)."))";
}
$sql = "SELECT * FROM table WHERE ".$where;

Men ikke specielt optimalt :)
Avatar billede keet Nybegynder
11. april 2005 - 19:12 #3
det er ikke noget der skal køre særlig tit..

jeg prøver lige det du skriver..
Avatar billede keet Nybegynder
11. april 2005 - 20:13 #4
Så fik jeg det til at virke. = tegnet i foreach skulle lige ændres til =>. Og anden gang der bruges array_keys skulle det have været array_values.

Men ellers mange tak for hjælpen. Vil du ligge et svar?
Avatar billede barklund Nybegynder
11. april 2005 - 20:17 #5
Ja selvfølgelig - småfejl - jeg testede det ikke lige ;)
Avatar billede barklund Nybegynder
11. april 2005 - 20:43 #6
Tark for points :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester