brymen2
28.07.2012, 08:49:17
Witam,
Jak można zrobić wstępną selekcję tabeli ? tzn.
chiałbym w jednym miejscu miec zapytanie
SELECT * FROM tabela WHERE cos
i następnie odwoływać się do tej tabeli standardowym zapytaniem (SELECT * FROM ...... WHERE ......) która jest juz przefiltrowana przez pierwsze zapytanie
Nie wiem jak to napisać prawidłowo.
Dziękuję za pomoc.
CuteOne
28.07.2012, 09:10:54
Nic z tego nie rozumiem

może napisz co chcesz osiągnąć lub przepisz powyższy post na język zrozumiały dla innych
konrados
28.07.2012, 09:19:57
A ja chyba rozumiem:)
@brymen2: Poczytaj o widokach. Ale przede wszystkim, to powiedz czemu chcesz to robić?
brymen2
28.07.2012, 09:21:18
tak myslałem ze nie zostanę zrozumiany. Mam tabelę która ma 10 000 rekordów.
Z tego potrzebuję ok 4 000 rekordów które następnie muszę odpowiednio przefiltrować. Nie chcę ciagle pisać kilku warunków dzięki którym otrzymuję te 4 000 rekordów. 4 000 muszę w róznych miejscach znowu odpowiednio przefiltrować. Dlatego naspiałem wstępna selekcja z 10 000 na 4 000 a następnie zapytania mysql tylko do tych 4 000. Jaśniej juz nie potrafię :]
konrados
28.07.2012, 09:24:20
No to tak jak powiedziałem - widoki.
Albo filtrujesz php-em - iterujesz przez te 4000 rekordy i sprawdzasz czy dana wartość==coś tam.
edit: zamiast widoków to może raczej stwórz sobie tzw. memory table tyle, że robienie tego przy każdym requeście jest trochę złym pomysłem. Jak bym to zrobił php-em.
brymen2
28.07.2012, 09:36:24
A może inaczej. Czy w zapytaniu "SELECT * FROM tabela WHERE cos " mozna wstawić warunek w postaci zmiennej np.
$warunek = 'cos1 = 1 AND cos2 = 2 AND cos3 = 3 AND cos4 = 4';
i wstawić to do zapytania
"SELECT * FROM tabela WHERE $warunek"
Czy jest to do wykonania ?
CuteOne
28.07.2012, 10:11:44
Jak najbardziej
brymen2
28.07.2012, 11:07:20
ale mi takie rozwiązanie nie chce działać
konrados
28.07.2012, 11:08:33
A kod mógłbyś tak może wkleić?
Pamiętaj, że nazwy pól zamykamy w `` (taki odwrócony apostrof) zaś wartości w '' (apostrofy)
Czyli powinno być:
$warunek = " `cos1` = '1' AND `cos2` = '2' AND `cos3`= '3' AND `cos4` = '4' ";
CuteOne
28.07.2012, 11:12:05
@konrados: zaraz się na Ciebie rzucą za te apostrofy
brymen2
28.07.2012, 11:12:55
$warunek = '`cos` = 2';
"SELECT * FROM `tabela` WHERE `".$warunek."`"
konrados
28.07.2012, 11:13:43
@CuteOne: Ojej czemu? Zawsze tak robiłem...
@brymen2: czy ja dobrze widzę, że cały ten warunek zamykasz w apostrofach?
spróbuj tak:
$warunek = " `cos` = '2' ";
"SELECT * FROM `tabela` WHERE $warunek"
brymen2
28.07.2012, 11:18:42
ok poszło
$warunek = "`cos` = '2'";
"SELECT * FROM `tabela` WHERE ".$warunek.""
dziękuję za pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.