Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [solved] kwerenda z parametrem
mihmih
post
Post #1





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

Ostrzeżenie: (0%)
-----


witam,

mam problem z kwerendą z parametrem. Do kwerendy wprowadza się 2 parametry - numer zamówienia i oznaczenie wyrobu z zamówienia. Chciałbym aby przy wprowadzeniu drugiego parametru wynikiem była tabela z wyrobami gdzie jest tylko to oznaczenie (wpisany parametr nr 2), a w przypadku niewprowadzania 2 parametru wynikiem były wszystkie wyroby z danego zamówienia, gdzie wartość 2 parametru to NULL.


wymyśliłem coś takiego, ale niestety nie działa:

  1. WHERE `zamowienia`.`numer_zamowienia` = @podaj_numer_zamowienia AND `pozycje_zamowieniowe`.`oznaczenie_wz` = (CASE WHEN @podaj_oznaczenie_wz IS NULL THEN NULL ELSE @podaj_oznaczenie_wz END)


czy ktoś mógłby pomóc?

Ten post edytował mihmih 18.08.2015, 20:30:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 807
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Trudno mi jest stwierdzić gdzie leży błąd jeśli nie podałeś całego zapytania.

Podam sprawdzony przykład:
  1. SELECT @podaj_oznaczenie_wz:=1,id
  2. FROM tabela
  3. WHERE COALESCE(id IN (CASE WHEN @podaj_oznaczenie_wz IS NULL THEN NULL ELSE @podaj_oznaczenie_wz END),TRUE)

Tabela zawiera kolumnę id z różnymi wartościami, w tym NULL. Zapytanie wybiera tylko rekordy gdzie id=1 lub id=NULL.

EDIT:
Niepoprawnie zrozumiałem Twój problem.

Odpowiednie rozwiązanie:
z parametrem:
  1. SET @podaj_oznaczenie_wz:=2;
  2. SELECT id
  3. FROM tabela
  4. WHERE COALESCE(id,'') IN (CASE WHEN @podaj_oznaczenie_wz IS NULL THEN '' ELSE @podaj_oznaczenie_wz END)


bez parametru:
  1. SELECT id
  2. FROM tabela
  3. WHERE COALESCE(id,'') IN (CASE WHEN @podaj_oznaczenie_wz IS NULL THEN '' ELSE @podaj_oznaczenie_wz END)


A warunek można uprościć do:
  1. WHERE COALESCE(id,'')=COALESCE(@podaj_oznaczenie_wz,'')


Ten post edytował trueblue 18.08.2015, 20:11:23
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 20:24