Avatar billede jaboo Nybegynder
11. juli 2001 - 15:18 Der er 6 kommentarer og
2 løsninger

if sætninger i sql

Kan man i sql have if sætninger ?

hver sætning med filterset_match skal være opfyldt hvis filterset_match passer med = eller == osv.

        $SQL .= \" OR (filterset_match = \'=\' AND filter_values.filterset_value LIKE client_data.textdata)\";
        $SQL .= \" OR (filterset_match = \'==\' AND filter_values.filterset_value = client_data.textdata)\";
        $SQL .= \" OR (filterset_match = \'!=\' AND filter_values.filterset_value <> client_data.textdata)\";
        $SQL .= \" OR (filterset_match = \'>\' AND filter_values.filterset_value > client_data.textdata)\";
        $SQL .= \" OR (filterset_match = \'<\' AND filter_values.filterset_value < client_data.textdata)\";
        $SQL .= \" OR (filterset_match = \'>=\' AND filter_values.filterset_value >= client_data.textdata)\";
        $SQL .= \" OR (filterset_match = \'<=\' AND filter_values.filterset_value <= client_data.textdata)\";
Avatar billede erikjacobsen Ekspert
11. juli 2001 - 15:35 #1
Ja, i MySql, noget i retning af

  if(a>b,\'a\',\'b\')
Avatar billede kichian Nybegynder
11. juli 2001 - 15:36 #2
Ja.
Avatar billede tmceu Praktikant
11. juli 2001 - 15:37 #3
IF sætninger laves normalt i stored procedures, hvilket så vidt jeg ved ikke understøttes af den nuv. version af MySql, så det tror jeg ikke du kan :-(

Mvh
Thomas
Avatar billede tmceu Praktikant
11. juli 2001 - 15:37 #4
Glem det, der var nogle der vidste bedre :-)
Avatar billede erikjacobsen Ekspert
11. juli 2001 - 15:49 #5
Du kan også bruge en case, men det er stort set samme skrivearbejde. En skitse

  $SQL .= \" OR CASE filterset_match WHEN \'=\' THEN filter_values.filterset_value LIKE client_data.textdata WHEN \'==\' THEN result ...] filter_values.filterset_value = client_data.textdata END\"
Avatar billede erikjacobsen Ekspert
11. juli 2001 - 15:50 #6
Prøver lige igen

$SQL .= \" OR CASE filterset_match WHEN \'=\' THEN filter_values.filterset_value LIKE client_data.textdata WHEN \'==\' THEN filter_values.filterset_value = client_data.textdata ELSE true END\" ;

Du skal udvide den lidt...
Avatar billede jaboo Nybegynder
12. juli 2001 - 11:15 #7
Jeg har nu lavet denne :

        $SQL = \"SELECT COUNT(filter_values.filterset_name) FROM client_data, filter_values WHERE\";
        $SQL .= \" client_data.dataname = filter_values.filterset_name\";
        $SQL .= \" AND client_data.f_listid = \".$listid;
        $SQL .= \" AND client_data.f_emailid = \".$emailid;
        $SQL .= \" AND filter_values.f_filterid = \".$filterid;
        $SQL .= \" AND (\";
        $SQL .= \" IF(filterset_match = \'=\', filter_values.filterset_value LIKE client_data.textdata, 1) AND\";
        $SQL .= \" IF(filterset_match = \'==\', filter_values.filterset_value = client_data.textdata, 1) AND\";
        $SQL .= \" IF(filterset_match = \'<>\', filter_values.filterset_value <> client_data.textdata, 1) AND\";
        $SQL .= \" IF(filterset_match = \'>\', filter_values.filterset_value > client_data.textdata, 1) AND\";
        $SQL .= \" IF(filterset_match = \'<\', filter_values.filterset_value < client_data.textdata, 1) AND\";
        $SQL .= \" IF(filterset_match = \'>=\', filter_values.filterset_value >= client_data.textdata, 1) AND\";
        $SQL .= \" IF(filterset_match = \'<=\', filter_values.filterset_value <= client_data.textdata, 1)\";
        $SQL .= \")\";
        $SQL .= \" GROUP BY filter_values.filterset_name\";

Men hvis dette er sandt :
        $SQL .= \" client_data.dataname = filter_values.filterset_name\";
        $SQL .= \" AND client_data.f_listid = \".$listid;
        $SQL .= \" AND client_data.f_emailid = \".$emailid;
        $SQL .= \" AND filter_values.f_filterid = \".$filterid;

Vil den så for alle dem, matche op mod alle if sætninger ?
Avatar billede erikjacobsen Ekspert
12. juli 2001 - 18:10 #8
Ja, det ser rigtigt nok ud - i princippet. Virker det?
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
Computerworld tilbyder specialiserede kurser i database-management

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