![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 592 Pomógł: 62 Dołączył: 3.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Skonstruowałem sobie zapytanie:
zakładając, że $cid to 5 i że wynikiem funkcji SUBSTRING_INDEX jest `1,3,4`, uproszczam zapytanie do:
i teraz działa, lecz jak znowu zamienię 1,3,4 na SUBSTRING_INDEX(mc.children_ids, CONCAT(",", "'.$cid.'"), 1), którego wynikiem też jest 1,3,4 to pokazuje tylko jeden rekord zamiast 3... Pozdrawiam i z góry dziękuję! Ten post edytował rzymek01 26.05.2008, 15:15:03 -------------------- :]
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze sprawdź, czy w pierwszym przypadku zapytanie na prawdę Ci się dobrze konstruuje. Wyświetl je za pomocą echo i zobacz czy jest identyczne z drugim wariantem.
A jesteś pewien, że SUBSTRING_INDEX(mc.children_ids, CONCAT(",", "'.$cid.'"), 1) daje wynik 1,3,4? Jakoś mi na to nie wygląda. Ten post edytował JoShiMa 26.05.2008, 16:04:25 -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
sam napisałeś:
Cytat zakładając, że $cid to 5 i że wynikiem funkcji SUBSTRING_INDEX jest `1,3,4` zatem w pierwszym wariancie otrzymujesz:
a to nie to samo, co w drugiej wersj:
-------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 592 Pomógł: 62 Dołączył: 3.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
nevt, macz rację
![]() ![]() albo: jak zrobić z pola tekstowego:
mając dane np. 4 takie coś:
czyli ucinamy tekst od początku do wystąpienia w tym wypadku 4 ![]() Pozdrawiam Ten post edytował rzymek01 26.05.2008, 17:02:05 -------------------- :]
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
-------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 592 Pomógł: 62 Dołączył: 3.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
nie rozumiem co mam zrobić z instr, który zwraca tylko pozycję znalezionego podciągu
![]() edit: jest coś takiego w mysql jak eval w php? ![]() Ten post edytował rzymek01 26.05.2008, 20:43:35 -------------------- :]
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
wklej sobie na próbę dokładnie tak jak podałem - zobaczysz, że działa...
a łopatologicznie - jak znajdzie - zwraca liczbę większą od zera, która w warunku WHERE zmieniana jest na logiczne TRUE a jak nie znajdzie - to zwraca zero - które w warunku WHERE zmieniane jest na logiczne FALSE ... cała tajemnica... -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 592 Pomógł: 62 Dołączył: 3.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
rozumiem, dzięki wielkie
![]() wczoraj byłem jakiś ciężki ![]() //edit: działa, tylko wadą tego rozwiązania jest nieoptymalność takiej operacji, bo w przypadku IN wybiera podane rekordy, a w INSTR sprawdza wszystkie rekordy co przy dużej liczbie kategorii może znacznie wydłużyć czas takiego zapytania Ten post edytował rzymek01 27.05.2008, 17:11:09 -------------------- :]
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 01:41 |