Witam
Mam taki problem:
Mam tabele z produktami i tabelę gdzie są przetrzymywane opcje tych produktów wraz z ceną.
stworzyłem takie zapytanie
$podzapytanie_5 = "SELECT MIN(cena) FROM rozmiary ";
$podzapytanie_5 .= "WHERE rozmiary.id_produkt = produkty.id_produkt ";
$podzapytanie_6 = "SELECT MIN(cena_promocyjna) FROM rozmiary ";
$podzapytanie_6 .= "WHERE rozmiary.id_produkt = produkty.id_produkt ";
$query = "SELECT produkty.* , producenci.nazwa, (".$podzapytanie_5.") AS cena, (".$podzapytanie_6.") AS cena_promocyjna ";
$query .= "FROM produkty INNER JOIN producenci ON produkty.producent = producenci.id_producent ";
$query .= "WHERE ((produkty.id_dzial = '".$id_dzial."' AND produkty.id_kategoria = '".$id_kategoria."') OR produkty.id_produkt = ANY (".$podzapytanie.")) ";
$query .= "AND produkty.id_dzial = ANY (".$podzapytanie_2.") AND produkty.id_kategoria = ANY (".$podzapytanie_1.") AND produkty.ukryj = 0 AND ";
$query .= "cena_promocyjna != '0' AND ";
$query = rtrim( $query, ' AND' ); $query .= "; ";
jest tam jescze sortowanie i porcjowanie ale to juz nie isttotne.
ważne jest ze przy próbie odczytania wywala mi błąd
Unknown column 'cena_promocyjna' in 'where clause'
SELECT produkty
.* , producenci
.nazwa
, (SELECT
MIN(cena
) FROM rozmiary WHERE rozmiary
.id_produkt
= produkty
.id_produkt
) AS cena
, (SELECT
MIN(cena_promocyjna
) FROM rozmiary
WHERE rozmiary.id_produkt = produkty.id_produkt ) AS cena_promocyjna
FROM produkty INNER
JOIN producenci ON produkty
.producent
= producenci
.id_producent
WHERE ((produkty.id_dzial = '4' AND produkty.id_kategoria = '13') OR produkty.id_produkt = ANY (SELECT id_produkt FROM produktkategoria WHERE produktkategoria.id_kategoria = '13' ))
AND produkty.id_dzial = ANY (SELECT id_dzial FROM produkty_dzialy WHERE produkty_dzialy.ukryj = 0 )
AND produkty.id_kategoria = ANY (SELECT id_kategoria FROM produkty_kategorie WHERE produkty_kategorie.ukryj = 0 )
AND produkty
.ukryj
= 0 AND cena_promocyjna
!= '0' ORDER BY
(( CASE WHEN cena_promocyjna
!= 0 THEN cena_promocyjna
ELSE cena
END )) ;
Czyli nie da się przefitrowac wyniku po aliasie??
Są na to jakies sposoby?