• 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

0 głosów
492 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 (880 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

–1 głos
1 odpowiedź 86 wizyt
pytanie zadane 20 lipca 2018 w SQL, bazy danych przez P0Y3B Nowicjusz (160 p.)
+3 głosów
4 odpowiedzi 2,454 wizyt
0 głosów
1 odpowiedź 111 wizyt
pytanie zadane 22 stycznia 2017 w PHP, Symfony, Zend przez eliano Gaduła (3,740 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

65,654 zapytań

112,282 odpowiedzi

236,928 komentarzy

46,645 pasjonatów

Przeglądających: 148
Pasjonatów: 1 Gości: 147

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...