Cytat(pmir13 @ 3.10.2013, 03:35:39 )

Nie da się argumentu przekazać bezpośrednio do zapytania jako nazwy kolumny, tabeli itp. Tam mogą być tylko identyfikatory. Argumenty bezpośrednio do zapytania można wpisać tylko tam, gdzie normalnie byś wpisywał gotowe wartości. Sam fakt, że czegoś takiego potrzebujesz daje do myślenia nad strukturą bazy. Jeśli jednak koniecznie chcesz to zrobić to musisz pomóc sobie klejonym preparowanym zapytaniem:
delimiter $
DROP PROCEDURE IF EXISTS mojasuma$
CREATE PROCEDURE mojasuma( IN kolumna CHAR(128) )
BEGIN
SET @prepared_sql =
CONCAT( 'SELECT SUM(',
kolumna,
') AS suma FROM produkty' );
PREPARE stmt FROM @prepared_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END$
delimiter ;
CALL mojasuma( 'ilosc' );
CALL mojasuma( 'cena*ilosc' );
hmm, wyglada to dosc skomplikowanie... poczytam na temat elementow, ktorych nie znam... jak prepare, czy execute (nigdy tego nie uzywalem)... napisales, ze trzeba pomyslec nad struktura bazy... moze faktycznie ja zle do tego podchodze... jednak to co robie jest dosc nietypowe i problem rozwiazuje obecnie w php (co nie jest moze optymalne, ale w sql tego jeszcze nie umiem), chodzi o to, ze trzeba powyciagac wartosci z roznych widokow i to powywracanych na rozne strony w zaleznosci od parametrow i zaleznosci miedzy tym parametrami (np. czy dodatni czy ujemny, czy argumenty podano alfabetycznie czy nie itd), a robienie odpowiednich joinow w teorii by dzialalo, ale jak to napisalem to zajelo kilkadziesiat linii (pelno dlugich (bo precyzyjnych) aliasow i do tego gdzies wkradl sie bug i uznalem, ze albo musze sie nauczyc procedur, albo zrobie to w php... ze czas naglil, to zrobilem w php, ale procedur i tak sie chce nauczyc i wlasnie utknalem na tych argumentach w zapytaniach

dzieki, bede to analizowal...
EDIT
jednak nie jest to az tak skomplikwane jak wygladalo na pierwszy rzut oka i da sie to ogarnac

k.