Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PostgreSQL]Warunek where dla nowej kolumny
kamelek
post 4.10.2012, 11:19:41
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 13.03.2011

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


Witam,
witam mam takie troche lamerskie pytanie bo nie iwem jak zapytac o to wujka google

jezeli mam cos takiego

  1.  
  2. SELECT id_indeksu, indeks, (case when coś_tam then coś_tam end) AS ilosć
  3. FROM coś_tam
  4. WHERE ilosc > 0
  5.  


To taki przykład

PostgrSQL zgłasz mi

  1. ERROR: COLUMN "ilosc" does NOT exist
  2. LINE 1: ... WHERE coś_tam AND coś_tam AND ilosc >0


Czy coś robie nie tak ?

Ten post edytował kamelek 4.10.2012, 11:21:32
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
b4rt3kk
post 4.10.2012, 11:32:39
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Może dlatego, że alias to ilosć a sprawdzasz ilosc? (zwróć uwagę na ostatnią literkę?).


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
kamelek
post 4.10.2012, 11:44:02
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 13.03.2011

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


Zapytanie wygląda tak

  1. SELECT
  2. id_indeksu,
  3. indeks,
  4. nazwa_indeksu,
  5. case when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))> 0 then 1
  6. when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))= 0 AND
  7. tmp.ilo_na_dost(28,id_indeksu) > 0 then 2 else tmp.ilo_na_dost(28,id_indeksu) end AS STATUS
  8. FROM g.gm_indeksy WHERE rodzaj_materialu3 IN (4,5) AND pole3 = 0 --and status > 0



jesli usune -- to wyskakuje komunikat
literówek zadnych nie ma :/
Go to the top of the page
+Quote Post
viking
post 4.10.2012, 11:56:56
Post #4





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Spróbuj alias z małej litery i opakowany w "".


--------------------
Go to the top of the page
+Quote Post
kamelek
post 4.10.2012, 12:03:30
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 13.03.2011

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


  1. SELECT
  2. id_indeksu,
  3. indeks,
  4. nazwa_indeksu,
  5. case when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))> 0 then 1
  6. when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))= 0 AND
  7. tmp.ilo_na_dost(28,id_indeksu) > 0 then 2 else tmp.ilo_na_dost(28,id_indeksu) end AS sss
  8. FROM g.gm_indeksy WHERE rodzaj_materialu3 IN (4,5) AND pole3 = 0 AND sss > 0


W poscie wyzej mi BBCode zmieniel słówko status na duze litery byly z małej

Z "" też nie działa zresztą już wcześniej próbowałem, a zapytanie pod wzgledem logicznym wygląda ok ?
Go to the top of the page
+Quote Post
viking
post 4.10.2012, 12:31:25
Post #6





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Wygląda raczej ok. Schematy mają ustawioną ściężkę przeszukiwania (SET search_path)? Ale to chyba byłby inny błąd.


--------------------
Go to the top of the page
+Quote Post
mmmmmmm
post 4.10.2012, 14:34:41
Post #7





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Nazwy kolumnom nadawane są na samym końcu.
Można twój problem rozwiązać na parę sposobów:
  1. SELECT * FROM (SELECT
  2. id_indeksu,
  3. indeks,
  4. nazwa_indeksu,
  5. case when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))> 0 then 1
  6. when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))= 0 AND
  7. tmp.ilo_na_dost(28,id_indeksu) > 0 then 2 else tmp.ilo_na_dost(28,id_indeksu) end AS sss
  8. FROM g.gm_indeksy WHERE rodzaj_materialu3 IN (4,5) AND pole3 = 0) x WHERE sss>0

  1. SELECT
  2. id_indeksu,
  3. indeks,
  4. nazwa_indeksu,
  5. case when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))> 0 then 1
  6. when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))= 0 AND
  7. tmp.ilo_na_dost(28,id_indeksu) > 0 then 2 else tmp.ilo_na_dost(28,id_indeksu) end AS sss
  8. FROM g.gm_indeksy WHERE rodzaj_materialu3 IN (4,5) AND pole3 = 0 AND case when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))> 0 then 1
  9. when (i.ilosc_na_mag(3,id_indeksu)+i.ilosc_na_mag(5,id_indeksu)+i.ilosc_na_mag(9,id_indeksu))= 0 AND
  10. tmp.ilo_na_dost(28,id_indeksu) > 0 then 2 else tmp.ilo_na_dost(28,id_indeksu) end>0

  1. z zastosowaniem WITH (nie chce mi się pisać)

Go to the top of the page
+Quote Post
kamelek
post 5.10.2012, 10:17:16
Post #8





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 13.03.2011

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


dzięki mmmmmmm, właśnie sam też do tego doszedłem smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 08:52