• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pętla IF oraz zmienne w zapytaniu SQL

VPS Starter Arubacloud
0 głosów
1,475 wizyt
pytanie zadane 20 sierpnia 2018 w SQL, bazy danych przez lukii1717 Nowicjusz (140 p.)

Witam,

Problem wygląda następująco:

Założenia: W zależności od uprawnień użytkownika potrzebuje aby zapytanie sql wygladało inaczej.

Moje zapytanie teraz wyglada tak:

 $procedures_max_2 = $polaczenie->query("SELECT * FROM procedures WHERE
                                                                                        IF {$wiersz['up_0']} == True BEGIN category LIKE '%up_0%' END
                                                                                        IF {$wiersz['up_1']} == True BEGIN OR category LIKE '%up_1%' END
                                                                                        IF {$wiersz['up_2']} == True BEGIN OR category LIKE '%up_2%' END
                                                                                        IF {$wiersz['up_3']} == True BEGIN OR category LIKE '%up_3%' END
                                                                                        IF {$wiersz['up_4']} == True BEGIN OR category LIKE '%up_4%' END
                                                                                        IF {$wiersz['up_5']} == True BEGIN OR category LIKE '%up_5%' END
                                                                                        IF {$wiersz['up_6']} == True BEGIN OR category LIKE '%up_6%' END
                                                                                        IF {$wiersz['up_7']} == True BEGIN OR category LIKE '%up_7%' END
                                                                                        ");

Jak poprawnie użyć pętli IF w sql-u.

 

Wiem ze to problem z zapytaniem ponieważ jeśli zapytanie wygląda tak :

$procedures_max_2 = $polaczenie->query("SELECT * FROM procedures WHERE category LIKE '%up_0%'");

wszystko jest w porządku.  Wiec to kwestia poprawności składni zapytania

1 odpowiedź

+1 głos
odpowiedź 20 sierpnia 2018 przez iendrus Użytkownik (900 p.)

Użyj konstrukcji CASE

Coś w stylu:

SELECT * FROM procedures WHERE
CASE WHEN {$wiersz['up_0']} == True THEN category LIKE '%up_0%' END
OR CASE WHEN {$wiersz['up_1']} == True THEN category LIKE '%up_1%' END
OR CASE WHEN (itd...)

 

komentarz 30 sierpnia 2018 przez ukasz112 Początkujący (390 p.)
Nie do końca jestem w stanie zrozumieć jak to ma działać.

Spróbuj tak:

SELECT * FROM procedures WHERE category like '%"+$wiersz['up_0']+"%'

Możesz spróbować zadeklarować zmienną w SQLu, w zależności od silnika

DECLARE @zmienna BIT = wartość

...i dalej SELECT * FROM procedures WHERE category like '%@zmienna%'

Podobne pytania

+3 głosów
4 odpowiedzi 4,496 wizyt
pytanie zadane 10 kwietnia 2015 w PHP przez Hatter Gaduła (3,180 p.)
–1 głos
1 odpowiedź 371 wizyt
pytanie zadane 20 lipca 2018 w SQL, bazy danych przez P0Y3B Nowicjusz (220 p.)
0 głosów
0 odpowiedzi 680 wizyt
pytanie zadane 10 kwietnia 2019 w Inne języki przez albert828 Nowicjusz (200 p.)

93,078 zapytań

142,041 odpowiedzi

321,445 komentarzy

62,422 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...