Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z fitowaniem po aliasach w zapytaniu
Mugol
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 3.02.2010

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


Witam

Mam taki problem:
Mam tabele z produktami i tabelę gdzie są przetrzymywane opcje tych produktów wraz z ceną.

stworzyłem takie zapytanie

  1. $podzapytanie_5 = "SELECT MIN(cena) FROM rozmiary ";
  2. $podzapytanie_5 .= "WHERE rozmiary.id_produkt = produkty.id_produkt ";
  3.  
  4. $podzapytanie_6 = "SELECT MIN(cena_promocyjna) FROM rozmiary ";
  5. $podzapytanie_6 .= "WHERE rozmiary.id_produkt = produkty.id_produkt ";
  6.  
  7. $query = "SELECT produkty.* , producenci.nazwa, (".$podzapytanie_5.") AS cena, (".$podzapytanie_6.") AS cena_promocyjna ";
  8. $query .= "FROM produkty INNER JOIN producenci ON produkty.producent = producenci.id_producent ";
  9. $query .= "WHERE ((produkty.id_dzial = '".$id_dzial."' AND produkty.id_kategoria = '".$id_kategoria."') OR produkty.id_produkt = ANY (".$podzapytanie.")) ";
  10. $query .= "AND produkty.id_dzial = ANY (".$podzapytanie_2.") AND produkty.id_kategoria = ANY (".$podzapytanie_1.") AND produkty.ukryj = 0 AND ";
  11. $query .= "cena_promocyjna != '0' AND ";
  12. $query = rtrim( $query, ' AND' );
  13. $query .= "; ";


jest tam jescze sortowanie i porcjowanie ale to juz nie isttotne.

ważne jest ze przy próbie odczytania wywala mi błąd
  1. Unknown column 'cena_promocyjna' in 'where clause'
  2.  
  3.  
  4. SELECT produkty.* , producenci.nazwa, (SELECT MIN(cena) FROM rozmiary WHERE rozmiary.id_produkt = produkty.id_produkt ) AS cena, (SELECT MIN(cena_promocyjna) FROM rozmiary
  5. WHERE rozmiary.id_produkt = produkty.id_produkt ) AS cena_promocyjna
  6. FROM produkty INNER JOIN producenci ON produkty.producent = producenci.id_producent
  7. 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' ))
  8. AND produkty.id_dzial = ANY (SELECT id_dzial FROM produkty_dzialy WHERE produkty_dzialy.ukryj = 0 )
  9. AND produkty.id_kategoria = ANY (SELECT id_kategoria FROM produkty_kategorie WHERE produkty_kategorie.ukryj = 0 )
  10. 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?
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 20.08.2025 - 06:26